bool GLES2Video::BeginTargetScene(const Color& dwBGColor, const bool clear) { // explicit static cast for better performance TexturePtr texturePtr = m_currentTarget.lock(); if (texturePtr) { Texture *pTexture = texturePtr.get(); // safety compile-time error checking GLES2Texture *pGLES2Texture = static_cast<GLES2Texture*>(pTexture); // safer direct cast const GLuint target = pGLES2Texture->GetFrameBufferID(); glBindFramebuffer(GL_FRAMEBUFFER, target); CheckFrameBufferStatus(m_logger, target, pGLES2Texture->GetTextureID(), false); if (clear) { Vector4 color; color.SetColor(dwBGColor); glClearColor(color.x, color.y, color.z, color.w); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); } const Texture::PROFILE& profile = pGLES2Texture->GetProfile(); Enable2D(static_cast<int>(profile.width), static_cast<int>(profile.height), true); m_shaderContext->ResetViewConstants(m_orthoMatrix, GetCurrentTargetSize()); } else { Message(GS_L("There's no render target"), GSMT_ERROR); } m_rendering = true; return true; }
bool GLES2Video::BeginSpriteScene(const Color& dwBGColor) { UnbindFrameBuffer(); if (dwBGColor != gs2d::constant::ZERO) { m_backgroundColor = dwBGColor; } Vector4 color; color.SetColor(m_backgroundColor); glClearColor(color.x, color.y, color.z, color.w); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); SetAlphaMode(Video::AM_PIXEL); m_rendering = true; return true; }