Stop using glMultiDrawElements since it's too buggy
This was SVN commit r9064.
This commit is contained in:
parent
099dbdb24a
commit
e70fae8d80
@ -63,10 +63,6 @@ actually supported).
|
||||
// GL_EXT_draw_range_elements / GL1.2:
|
||||
FUNC2(void, glDrawRangeElementsEXT, glDrawRangeElements, "1.2", (GLenum, GLuint, GLuint, GLsizei, GLenum, GLvoid*))
|
||||
|
||||
// GL_EXT_multi_draw_arrays / GL1.4
|
||||
FUNC2(void, glMultiDrawArraysEXT, glMultiDrawArrays, "1.4", (GLenum, GLint*, GLsizei*, GLsizei))
|
||||
FUNC2(void, glMultiDrawElementsEXT, glMultiDrawElements, "1.4", (GLenum, GLsizei*, GLenum, GLvoid**, GLsizei))
|
||||
|
||||
// GL_ARB_multitexture / GL1.3:
|
||||
FUNC2(void, glMultiTexCoord2fARB, glMultiTexCoord2f, "1.3", (int, float, float))
|
||||
FUNC2(void, glMultiTexCoord3fARB, glMultiTexCoord3f, "1.3", (int, float, float, float))
|
||||
|
@ -288,24 +288,6 @@ static void GL_CALL_CONV dummy_glDrawRangeElementsEXT(GLenum mode, GLuint, GLuin
|
||||
glDrawElements(mode, count, type, indices);
|
||||
}
|
||||
|
||||
static void GL_CALL_CONV dummy_glMultiDrawArraysEXT(GLenum mode, GLint* first, GLsizei* count, GLsizei primcount)
|
||||
{
|
||||
for (GLsizei i = 0; i < primcount; ++i)
|
||||
{
|
||||
if (count[i] > 0)
|
||||
glDrawArrays(mode, first[i], count[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void GL_CALL_CONV dummy_glMultiDrawElementsEXT(GLenum mode, GLsizei* count, GLenum type, GLvoid** indices, GLsizei primcount)
|
||||
{
|
||||
for (GLsizei i = 0; i < primcount; ++i)
|
||||
{
|
||||
if (count[i] > 0)
|
||||
glDrawElements(mode, count[i], type, indices[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void GL_CALL_CONV dummy_glActiveTextureARB(int)
|
||||
{
|
||||
}
|
||||
@ -353,12 +335,6 @@ static void importExtensionFunctions()
|
||||
pglDrawRangeElementsEXT = &dummy_glDrawRangeElementsEXT;
|
||||
}
|
||||
|
||||
if(!ogl_HaveExtension("GL_EXT_multi_draw_arrays"))
|
||||
{
|
||||
pglMultiDrawArraysEXT = &dummy_glMultiDrawArraysEXT;
|
||||
pglMultiDrawElementsEXT = &dummy_glMultiDrawElementsEXT;
|
||||
}
|
||||
|
||||
if(!ogl_HaveExtension("GL_ARB_multitexture"))
|
||||
{
|
||||
pglActiveTextureARB = &dummy_glActiveTextureARB;
|
||||
|
@ -711,8 +711,11 @@ void CPatchRData::RenderBases(const std::vector<CPatchRData*>& patches)
|
||||
|
||||
if (!g_Renderer.m_SkipSubmit)
|
||||
{
|
||||
pglMultiDrawElementsEXT(GL_TRIANGLES, &batch.first[0], GL_UNSIGNED_SHORT,
|
||||
(GLvoid**)&batch.second[0], batch.first.size());
|
||||
// Don't use glMultiDrawElements here since it doesn't have a significant
|
||||
// performance impact and it suffers from various driver bugs (e.g. it breaks
|
||||
// in Mesa 7.10 swrast with index VBOs)
|
||||
for (size_t i = 0; i < batch.first.size(); ++i)
|
||||
glDrawElements(GL_TRIANGLES, batch.first[i], GL_UNSIGNED_SHORT, batch.second[i]);
|
||||
}
|
||||
|
||||
g_Renderer.m_Stats.m_DrawCalls++;
|
||||
@ -848,8 +851,8 @@ void CPatchRData::RenderBlends(const std::vector<CPatchRData*>& patches)
|
||||
|
||||
if (!g_Renderer.m_SkipSubmit)
|
||||
{
|
||||
pglMultiDrawElementsEXT(GL_TRIANGLES, &batch.first[0], GL_UNSIGNED_SHORT,
|
||||
(GLvoid**)&batch.second[0], batch.first.size());
|
||||
for (size_t i = 0; i < batch.first.size(); ++i)
|
||||
glDrawElements(GL_TRIANGLES, batch.first[i], GL_UNSIGNED_SHORT, batch.second[i]);
|
||||
}
|
||||
|
||||
g_Renderer.m_Stats.m_DrawCalls++;
|
||||
@ -938,8 +941,8 @@ void CPatchRData::RenderStreams(const std::vector<CPatchRData*>& patches, int st
|
||||
|
||||
if (!g_Renderer.m_SkipSubmit)
|
||||
{
|
||||
pglMultiDrawElementsEXT(GL_TRIANGLES, &batch.first[0], GL_UNSIGNED_SHORT,
|
||||
(GLvoid**)&batch.second[0], batch.first.size());
|
||||
for (size_t i = 0; i < batch.first.size(); ++i)
|
||||
glDrawElements(GL_TRIANGLES, batch.first[i], GL_UNSIGNED_SHORT, batch.second[i]);
|
||||
}
|
||||
|
||||
g_Renderer.m_Stats.m_DrawCalls++;
|
||||
|
Loading…
Reference in New Issue
Block a user