Skip glTexCoordPointer() call if not needed
This commit is contained in:
parent
858c9ce924
commit
973ac8ddcd
2 changed files with 16 additions and 1 deletions
|
@ -269,13 +269,25 @@ void RenderTarget::draw(const Vertex* vertices, std::size_t vertexCount,
|
|||
vertices = NULL;
|
||||
}
|
||||
|
||||
// Check if texture coordinates array is needed, and update client state accordingly
|
||||
bool enableTexCoordsArray = (states.texture || states.shader);
|
||||
if (enableTexCoordsArray != m_cache.texCoordsArrayEnabled)
|
||||
{
|
||||
if (enableTexCoordsArray)
|
||||
glCheck(glEnableClientState(GL_TEXTURE_COORD_ARRAY));
|
||||
else
|
||||
glCheck(glDisableClientState(GL_TEXTURE_COORD_ARRAY));
|
||||
m_cache.texCoordsArrayEnabled = enableTexCoordsArray;
|
||||
}
|
||||
|
||||
// Setup the pointers to the vertices' components
|
||||
if (vertices)
|
||||
{
|
||||
const char* data = reinterpret_cast<const char*>(vertices);
|
||||
glCheck(glVertexPointer(2, GL_FLOAT, sizeof(Vertex), data + 0));
|
||||
glCheck(glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex), data + 8));
|
||||
glCheck(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), data + 12));
|
||||
if (enableTexCoordsArray)
|
||||
glCheck(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), data + 12));
|
||||
}
|
||||
|
||||
// Find the OpenGL primitive type
|
||||
|
@ -390,6 +402,8 @@ void RenderTarget::resetGLStates()
|
|||
if (shaderAvailable)
|
||||
applyShader(NULL);
|
||||
|
||||
m_cache.texCoordsArrayEnabled = true;
|
||||
|
||||
m_cache.useVertexCache = false;
|
||||
|
||||
// Set the default view
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue