mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
Use glDrawRangeElements
This commit is contained in:
parent
958758b37a
commit
2fc1b5f462
|
@ -177,7 +177,7 @@ PFNGLCREATETEXTURESPROC g_glCreateTextures;
|
||||||
PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
|
PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
|
||||||
PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
||||||
PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
||||||
PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
|
PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC g_glDrawRangeElementsBaseVertex;
|
||||||
PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
|
PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
|
||||||
|
|
||||||
void initGLFunctions()
|
void initGLFunctions()
|
||||||
|
@ -315,6 +315,6 @@ void initGLFunctions()
|
||||||
GL_GET_PROC_ADR(PFNGLCREATEBUFFERSPROC, glCreateBuffers);
|
GL_GET_PROC_ADR(PFNGLCREATEBUFFERSPROC, glCreateBuffers);
|
||||||
GL_GET_PROC_ADR(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers);
|
GL_GET_PROC_ADR(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers);
|
||||||
GL_GET_PROC_ADR(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTexture);
|
GL_GET_PROC_ADR(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTexture);
|
||||||
GL_GET_PROC_ADR(PFNGLDRAWELEMENTSBASEVERTEXPROC, glDrawElementsBaseVertex);
|
GL_GET_PROC_ADR(PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC, glDrawRangeElementsBaseVertex);
|
||||||
GL_GET_PROC_ADR(PFNGLFLUSHMAPPEDBUFFERRANGEPROC, glFlushMappedBufferRange);
|
GL_GET_PROC_ADR(PFNGLFLUSHMAPPEDBUFFERRANGEPROC, glFlushMappedBufferRange);
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,7 +201,7 @@ extern PFNGLBLENDCOLORPROC g_glBlendColor;
|
||||||
#define glCreateBuffers(...) CHECKED_GL_FUNCTION(g_glCreateBuffers, __VA_ARGS__)
|
#define glCreateBuffers(...) CHECKED_GL_FUNCTION(g_glCreateBuffers, __VA_ARGS__)
|
||||||
#define glCreateFramebuffers(...) CHECKED_GL_FUNCTION(g_glCreateFramebuffers, __VA_ARGS__)
|
#define glCreateFramebuffers(...) CHECKED_GL_FUNCTION(g_glCreateFramebuffers, __VA_ARGS__)
|
||||||
#define glNamedFramebufferTexture(...) CHECKED_GL_FUNCTION(g_glNamedFramebufferTexture, __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__)
|
#define glFlushMappedBufferRange(...) CHECKED_GL_FUNCTION(g_glFlushMappedBufferRange, __VA_ARGS__)
|
||||||
|
|
||||||
extern PFNGLCREATESHADERPROC g_glCreateShader;
|
extern PFNGLCREATESHADERPROC g_glCreateShader;
|
||||||
|
@ -295,7 +295,7 @@ extern PFNGLCREATETEXTURESPROC g_glCreateTextures;
|
||||||
extern PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
|
extern PFNGLCREATEBUFFERSPROC g_glCreateBuffers;
|
||||||
extern PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
extern PFNGLCREATEFRAMEBUFFERSPROC g_glCreateFramebuffers;
|
||||||
extern PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
extern PFNGLNAMEDFRAMEBUFFERTEXTUREPROC g_glNamedFramebufferTexture;
|
||||||
extern PFNGLDRAWELEMENTSBASEVERTEXPROC g_glDrawElementsBaseVertex;
|
extern PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC g_glDrawRangeElementsBaseVertex;
|
||||||
extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
|
extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC g_glFlushMappedBufferRange;
|
||||||
|
|
||||||
void initGLFunctions();
|
void initGLFunctions();
|
||||||
|
|
|
@ -204,7 +204,7 @@ void BufferedDrawer::drawTriangles(const graphics::Context::DrawTriangleParamete
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.frameBufferEmulation.N64DepthCompare == 0) {
|
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);
|
(u16*)nullptr + m_trisBuffers.ebo.pos - _params.elementsCount, m_trisBuffers.vbo.pos - _params.verticesCount);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,7 @@ void BufferedDrawer::drawTriangles(const graphics::Context::DrawTriangleParamete
|
||||||
const GLint vboStartPos = m_trisBuffers.vbo.pos - _params.verticesCount;
|
const GLint vboStartPos = m_trisBuffers.vbo.pos - _params.verticesCount;
|
||||||
for (GLuint i = 0; i < _params.elementsCount; i += 3) {
|
for (GLuint i = 0; i < _params.elementsCount; i += 3) {
|
||||||
glMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT);
|
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);
|
(u16*)nullptr + eboStartPos + i, vboStartPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user