- rewrote vertex buffer code to require GL_ARB_BUFFER_STORAGE extension.

This means it won't work anymore on anything that doesn't support OpenGL 4.0, but I don't think this is a problem. On older NVidia cards performance gains could not be seen and on older AMDs using the vertex buffer was even worse as long as it got mixed with immediate mode rendering.
This commit is contained in:
Christoph Oelckers 2014-05-10 21:47:07 +02:00
commit 7d3beb665b
9 changed files with 99 additions and 134 deletions

View file

@ -41,6 +41,7 @@
#include "gl/system/gl_system.h"
#include "gl/system/gl_interface.h"
#include "gl/data/gl_data.h"
#include "gl/data/gl_vertexbuffer.h"
#include "gl/system/gl_cvars.h"
#include "gl/shaders/gl_shader.h"
#include "gl/renderer/gl_renderer.h"
@ -79,6 +80,7 @@ void FRenderState::Reset()
mBlendEquation = GL_FUNC_ADD;
glBlendEquation = -1;
m2D = true;
mVertexBuffer = mCurrentVertexBuffer = NULL;
}
@ -300,6 +302,12 @@ void FRenderState::Apply(bool forcenoshader)
}
}
if (mVertexBuffer != mCurrentVertexBuffer)
{
if (mVertexBuffer == NULL) glBindBuffer(GL_ARRAY_BUFFER, 0);
else mVertexBuffer->BindVBO();
mCurrentVertexBuffer = mVertexBuffer;
}
if (forcenoshader || !ApplyShader())
{
GLRenderer->mShaderManager->SetActiveShader(NULL);