u32 ckLowLevelAPI::registerTexture(u16 width, u16 height, TextureFormat format, const void* image) { glEnable(GL_TEXTURE_2D); u32 tex_obj; glGenTextures(1, &tex_obj); glBindTexture(GL_TEXTURE_2D, tex_obj); glGetError(); if (image) { static const GLint s_gl_internal_format[] = { GL_RGB, GL_RGBA, GL_ALPHA }; glTexImage2D(GL_TEXTURE_2D, 0, s_gl_internal_format[format], width, height, 0, s_gl_internal_format[format], GL_UNSIGNED_BYTE, image); } if (glGetError() != GL_NO_ERROR) { tex_obj = 0; } resetTexture(); return tex_obj; }
void ckLowLevelAPI::resetDrawState() { glEnable(GL_SCISSOR_TEST); glEnable(GL_DEPTH_TEST); #ifndef CK_GLES2 glShadeModel(GL_SMOOTH); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); #endif #if defined(CK_GLES1) || defined(CK_GLES2) glClearDepthf(-1.0f); #else glClearDepth(-1.0f); #endif resetDepthTest(); resetBlendMode(); resetWriteMode(); resetBackfaceCulling(); resetTexture(); resetShader(); #ifndef CK_GLES2 resetVertexArrayState(); resetColorArrayState(); resetTexCoordArrayState(); #endif }
void Painter::resetState() { resetColor(); resetOpacity(); resetCompositionMode(); resetClipRect(); resetShaderProgram(); resetTexture(); resetAlphaWriting(); }
void ckLowLevelAPI::replaceSubTexture(u32 tex_obj, u16 x, u16 y, u16 width, u16 height, TextureFormat format, const void* sub_image) { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, tex_obj); if (sub_image) { static const GLint s_gl_internal_format[] = { GL_RGB, GL_RGBA, GL_ALPHA }; glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, width, height, s_gl_internal_format[format], GL_UNSIGNED_BYTE, sub_image); } resetTexture(); }
GLTextureStage::~GLTextureStage() { resetTexture(); }
void ckLowLevelAPI::unregisterTexture(u32 tex_obj) { glDeleteTextures(1, &tex_obj); resetTexture(); }