Skip to content

Commit

Permalink
#5893: Reduce state changes a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Feb 25, 2022
1 parent e2dc9f2 commit a067d34
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 19 deletions.
8 changes: 0 additions & 8 deletions radiantcore/rendersystem/backend/LightInteractions.cpp
Expand Up @@ -102,12 +102,6 @@ void LightInteractions::render(OpenGLState& state, RenderStateFlags globalFlagsM
{
auto worldToLight = _light.getLightTextureTransformation();

glEnableClientState(GL_VERTEX_ARRAY);

glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);

for (auto& pair : _objectsByEntity)
{
auto entity = pair.first;
Expand Down Expand Up @@ -147,8 +141,6 @@ void LightInteractions::render(OpenGLState& state, RenderStateFlags globalFlagsM
}
}
}

glDisableClientState(GL_VERTEX_ARRAY);
}

}
8 changes: 1 addition & 7 deletions radiantcore/rendersystem/backend/LightingModeRenderer.cpp
Expand Up @@ -61,18 +61,12 @@ IRenderResult::Ptr LightingModeRenderer::render(RenderStateFlags globalFlagsMask
glUseProgram(0);
glActiveTexture(GL_TEXTURE0);
glClientActiveTexture(GL_TEXTURE0);

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glEnableVertexAttribArrayARB(GLProgramAttribute::Position);
glEnableVertexAttribArrayARB(GLProgramAttribute::TexCoord);
glEnableVertexAttribArrayARB(GLProgramAttribute::Tangent);
glEnableVertexAttribArrayARB(GLProgramAttribute::Bitangent);
glEnableVertexAttribArrayARB(GLProgramAttribute::Normal);

// Draw non-interaction passes (like skyboxes or blend stages)
for (const auto& entity : _entities)
{
Expand Down
1 change: 1 addition & 0 deletions radiantcore/rendersystem/backend/ObjectRenderer.cpp
Expand Up @@ -29,6 +29,7 @@ void ObjectRenderer::SubmitObject(IRenderableObject& object, IGeometryStore& sto

glVertexPointer(3, GL_DOUBLE, sizeof(ArbitraryMeshVertex), &renderParams.bufferStart->vertex);
glColorPointer(4, GL_DOUBLE, sizeof(ArbitraryMeshVertex), &renderParams.bufferStart->colour);
glNormalPointer(GL_DOUBLE, sizeof(ArbitraryMeshVertex), &renderParams.bufferStart->normal);

glVertexAttribPointer(GLProgramAttribute::Position, 3, GL_DOUBLE, 0, sizeof(ArbitraryMeshVertex), &renderParams.bufferStart->vertex);
glVertexAttribPointer(GLProgramAttribute::Normal, 3, GL_DOUBLE, 0, sizeof(ArbitraryMeshVertex), &renderParams.bufferStart->normal);
Expand Down
11 changes: 7 additions & 4 deletions radiantcore/rendersystem/backend/SceneRenderer.cpp
Expand Up @@ -51,10 +51,16 @@ void SceneRenderer::setupState(OpenGLState& state)
// Set polygon stipple pattern from constant
glPolygonStipple(POLYGON_STIPPLE_PATTERN);

// Vertex Arrays stay enabled throughout the pass
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);

if (GLEW_VERSION_1_3) {
if (GLEW_VERSION_1_3)
{
glActiveTexture(GL_TEXTURE0);
glClientActiveTexture(GL_TEXTURE0);
}
Expand Down Expand Up @@ -82,9 +88,6 @@ void SceneRenderer::setupState(OpenGLState& state)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisable(GL_BLEND);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Expand Down
Expand Up @@ -96,6 +96,7 @@ void GLSLBumpProgram::enable()
{
GLSLProgramBase::enable();

glEnableVertexAttribArrayARB(GLProgramAttribute::Position);
glEnableVertexAttribArrayARB(GLProgramAttribute::TexCoord);
glEnableVertexAttribArrayARB(GLProgramAttribute::Tangent);
glEnableVertexAttribArrayARB(GLProgramAttribute::Bitangent);
Expand All @@ -108,6 +109,7 @@ void GLSLBumpProgram::disable()
{
GLSLProgramBase::disable();

glDisableVertexAttribArrayARB(GLProgramAttribute::Position);
glDisableVertexAttribArrayARB(GLProgramAttribute::TexCoord);
glDisableVertexAttribArrayARB(GLProgramAttribute::Tangent);
glDisableVertexAttribArrayARB(GLProgramAttribute::Bitangent);
Expand Down

0 comments on commit a067d34

Please sign in to comment.