Also check if vertex array is supported on restoring GL state, not just saving it.

This removes OpenGL errors reported repeatedly, and closes ticket:3834.
master
Per Inge Mathisen 2012-12-19 23:01:22 +01:00
parent c0d97ea032
commit b2c7d45cee
1 changed files with 6 additions and 4 deletions

View File

@ -607,9 +607,11 @@ void __glcRestoreGLState(const __GLCglState* inGLState,
&& GLEW_ARB_vertex_buffer_object)) { && GLEW_ARB_vertex_buffer_object)) {
if (!inGLState->vertexArray) if (!inGLState->vertexArray)
glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_VERTEX_ARRAY);
glVertexPointer(inGLState->vertexArraySize, inGLState->vertexArrayType, if (inGLState->vertexArray == GL_TRUE) {
inGLState->vertexArrayStride, glVertexPointer(inGLState->vertexArraySize, inGLState->vertexArrayType,
inGLState->vertexArrayPointer); inGLState->vertexArrayStride,
inGLState->vertexArrayPointer);
}
if (!inGLState->normalArray) if (!inGLState->normalArray)
glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_NORMAL_ARRAY);
if (!inGLState->colorArray) if (!inGLState->colorArray)
@ -618,7 +620,7 @@ void __glcRestoreGLState(const __GLCglState* inGLState,
glDisableClientState(GL_INDEX_ARRAY); glDisableClientState(GL_INDEX_ARRAY);
if (!inGLState->texCoordArray) if (!inGLState->texCoordArray)
glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY);
if (inAll || inContext->renderState.renderStyle == GLC_TEXTURE) if ((inAll || inContext->renderState.renderStyle == GLC_TEXTURE) && inGLState->texCoordArray == GL_TRUE)
glTexCoordPointer(inGLState->texCoordArraySize, glTexCoordPointer(inGLState->texCoordArraySize,
inGLState->texCoordArrayType, inGLState->texCoordArrayType,
inGLState->texCoordArrayStride, inGLState->texCoordArrayStride,