From 2fc1b5f462cfedddd8a0291b23b30ee1ed0d6620 Mon Sep 17 00:00:00 2001 From: Logan McNaughton Date: Thu, 8 Mar 2018 14:54:47 -0700 Subject: [PATCH] Use glDrawRangeElements --- src/Graphics/OpenGLContext/GLFunctions.cpp | 4 ++-- src/Graphics/OpenGLContext/GLFunctions.h | 4 ++-- src/Graphics/OpenGLContext/opengl_BufferedDrawer.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Graphics/OpenGLContext/GLFunctions.cpp b/src/Graphics/OpenGLContext/GLFunctions.cpp index 076e4529..656ad769 100644 --- a/src/Graphics/OpenGLContext/GLFunctions.cpp +++ b/src/Graphics/OpenGLContext/GLFunctions.cpp @@ -177,7 +177,7 @@ PFNGLCREATETEXTURESPROC g_glCreateTextures; PFNGLCREATEBUFFERSPROC g_glCreateBuffers; PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers; PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture; -PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC g_glDrawRangeElementsBaseVertex; PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange; void initGLFunctions() @@ -315,6 +315,6 @@ void initGLFunctions() GL_GET_PROC_ADR(PFNGLCREATEBUFFERSPROC, glCreateBuffers); GL_GET_PROC_ADR(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers); GL_GET_PROC_ADR(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTexture); - GL_GET_PROC_ADR(PFNGLDRAWELEMENTSBASEVERTEXPROC, glDrawElementsBaseVertex); + GL_GET_PROC_ADR(PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC, glDrawRangeElementsBaseVertex); GL_GET_PROC_ADR(PFNGLFLUSHMAPPEDBUFFERRANGEPROC, glFlushMappedBufferRange); } diff --git a/src/Graphics/OpenGLContext/GLFunctions.h b/src/Graphics/OpenGLContext/GLFunctions.h index dbf5a3ba..fd33f429 100644 --- a/src/Graphics/OpenGLContext/GLFunctions.h +++ b/src/Graphics/OpenGLContext/GLFunctions.h @@ -201,7 +201,7 @@ extern PFNGLBLENDCOLORPROC g_glBlendColor; #define glCreateBuffers(...) CHECKED_GL_FUNCTION(g_glCreateBuffers, __VA_ARGS__) #define glCreateFramebuffers(...) CHECKED_GL_FUNCTION(g_glCreateFramebuffers, __VA_ARGS__) #define glNamedFramebufferTexture(...) CHECKED_GL_FUNCTION(g_glNamedFramebufferTexture, __VA_ARGS__) -#define glDrawElementsBaseVertex(...) CHECKED_GL_FUNCTION(g_glDrawElementsBaseVertex, __VA_ARGS__) +#define glDrawRangeElementsBaseVertex(...) CHECKED_GL_FUNCTION(g_glDrawRangeElementsBaseVertex, __VA_ARGS__) #define glFlushMappedBufferRange(...) CHECKED_GL_FUNCTION(g_glFlushMappedBufferRange, __VA_ARGS__) extern PFNGLCREATESHADERPROC g_glCreateShader; @@ -295,7 +295,7 @@ extern PFNGLCREATETEXTURESPROC g_glCreateTextures; extern PFNGLCREATEBUFFERSPROC g_glCreateBuffers; extern PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers; extern PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture; -extern PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex; +extern PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC g_glDrawRangeElementsBaseVertex; extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange; void initGLFunctions(); diff --git a/src/Graphics/OpenGLContext/opengl_BufferedDrawer.cpp b/src/Graphics/OpenGLContext/opengl_BufferedDrawer.cpp index 775bc245..7a0d1eee 100644 --- a/src/Graphics/OpenGLContext/opengl_BufferedDrawer.cpp +++ b/src/Graphics/OpenGLContext/opengl_BufferedDrawer.cpp @@ -204,7 +204,7 @@ void BufferedDrawer::drawTriangles(const graphics::Context::DrawTriangleParamete } if (config.frameBufferEmulation.N64DepthCompare == 0) { - glDrawElementsBaseVertex(GLenum(_params.mode), _params.elementsCount, GL_UNSIGNED_SHORT, + glDrawRangeElementsBaseVertex(GLenum(_params.mode), 0, _params.verticesCount - 1, _params.elementsCount, GL_UNSIGNED_SHORT, (u16*)nullptr + m_trisBuffers.ebo.pos - _params.elementsCount, m_trisBuffers.vbo.pos - _params.verticesCount); return; } @@ -214,7 +214,7 @@ void BufferedDrawer::drawTriangles(const graphics::Context::DrawTriangleParamete const GLint vboStartPos = m_trisBuffers.vbo.pos - _params.verticesCount; for (GLuint i = 0; i < _params.elementsCount; i += 3) { glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT); - glDrawElementsBaseVertex(GLenum(_params.mode), 3, GL_UNSIGNED_SHORT, + glDrawRangeElementsBaseVertex(GLenum(_params.mode), 0, _params.verticesCount - 1, 3, GL_UNSIGNED_SHORT, (u16*)nullptr + eboStartPos + i, vboStartPos); } }