fix possible crash in older opengl driver implementations
This commit is contained in:
parent
9548ce78c6
commit
cfa7db77da
|
@ -38,6 +38,7 @@ void PainterOGL1::refreshState()
|
||||||
updateGlMatrixMode();
|
updateGlMatrixMode();
|
||||||
updateGlProjectionMatrix();
|
updateGlProjectionMatrix();
|
||||||
updateGlTextureMatrix();
|
updateGlTextureMatrix();
|
||||||
|
updateGlTextureState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PainterOGL1::bind()
|
void PainterOGL1::bind()
|
||||||
|
@ -46,14 +47,14 @@ void PainterOGL1::bind()
|
||||||
|
|
||||||
// vertex and texture coord arrays are always enabled
|
// vertex and texture coord arrays are always enabled
|
||||||
// to avoid massive enable/disables, thus improving frame rate
|
// to avoid massive enable/disables, thus improving frame rate
|
||||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
if(g_graphics.canUseDrawArrays())
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PainterOGL1::unbind()
|
void PainterOGL1::unbind()
|
||||||
{
|
{
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
if(g_graphics.canUseDrawArrays())
|
||||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PainterOGL1::drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode)
|
void PainterOGL1::drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode)
|
||||||
|
@ -69,11 +70,8 @@ void PainterOGL1::drawCoords(CoordsBuffer& coordsBuffer, DrawMode drawMode)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(textured != m_textureEnabled) {
|
if(textured != m_textureEnabled) {
|
||||||
if(textured)
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
else
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
m_textureEnabled = textured;
|
m_textureEnabled = textured;
|
||||||
|
updateGlTextureState();
|
||||||
}
|
}
|
||||||
|
|
||||||
// use vertex arrays if possible, much faster
|
// use vertex arrays if possible, much faster
|
||||||
|
@ -256,3 +254,16 @@ void PainterOGL1::updateGlTextureMatrix()
|
||||||
setMatrixMode(MatrixTexture);
|
setMatrixMode(MatrixTexture);
|
||||||
glLoadMatrixf(glTextureMatrix);
|
glLoadMatrixf(glTextureMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PainterOGL1::updateGlTextureState()
|
||||||
|
{
|
||||||
|
if(m_textureEnabled) {
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
if(g_graphics.canUseDrawArrays())
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
} else {
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
if(g_graphics.canUseDrawArrays())
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -66,6 +66,7 @@ private:
|
||||||
void updateGlMatrixMode();
|
void updateGlMatrixMode();
|
||||||
void updateGlProjectionMatrix();
|
void updateGlProjectionMatrix();
|
||||||
void updateGlTextureMatrix();
|
void updateGlTextureMatrix();
|
||||||
|
void updateGlTextureState();
|
||||||
|
|
||||||
GLenum m_matrixMode;
|
GLenum m_matrixMode;
|
||||||
Boolean<false> m_textureEnabled;
|
Boolean<false> m_textureEnabled;
|
||||||
|
|
Loading…
Reference in New Issue