Skip to content

Commit ae062f8

Browse files
committed
UPBGE: Use ARB OpenGL for functions higher than 3.0.
Functions like glVertexAttribDivisor and glDraw[Arrays/Elements]Instanced are requiering OpenGL 3.0/3, but some GPU could not offer it and so they must use the ARB extension instead.
1 parent 0414529 commit ae062f8

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLDebugDraw.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ inline static void attribVector(unsigned short loc, unsigned short stride, intpt
4848
{
4949
glEnableVertexAttribArray(loc);
5050
glVertexAttribPointer(loc, size, GL_FLOAT, false, stride, (const void *)offset);
51-
glVertexAttribDivisor(loc, divisor);
51+
glVertexAttribDivisorARB(loc, divisor);
5252
}
5353

5454
inline static void attribMatrix(unsigned short loc, unsigned short stride, intptr_t offset, unsigned short size, unsigned short divisor)
5555
{
5656
for (unsigned short i = 0; i < size; ++i) {
5757
glEnableVertexAttribArray(loc + i);
5858
glVertexAttribPointer(loc + i, size, GL_FLOAT, false, stride, (const void *)(offset + size * i * sizeof(float)));
59-
glVertexAttribDivisor(loc + i, divisor);
59+
glVertexAttribDivisorARB(loc + i, divisor);
6060
}
6161
}
6262

@@ -112,13 +112,12 @@ RAS_OpenGLDebugDraw::RAS_OpenGLDebugDraw()
112112
static const unsigned short stride = sizeof(RAS_DebugDraw::Line) / 2;
113113
const unsigned int pos = GPU_shader_get_attribute(m_colorShader, "pos");
114114
const unsigned int color = GPU_shader_get_attribute(m_colorShader, "color");
115-
115+
116116
glBindBuffer(GL_ARRAY_BUFFER, m_vbos[LINES_VBO]);
117117
attribVector(pos, stride, offsetof(RAS_DebugDraw::Line, m_from), 3, 0);
118118
attribVector(color, stride, offsetof(RAS_DebugDraw::Line, m_color), 4, 0);
119119
}
120120

121-
122121
static const unsigned short frustumStride = sizeof(RAS_DebugDraw::Frustum);
123122

124123
glBindVertexArray(m_vaos[FRUSTUMS_LINE_VAO]);
@@ -222,11 +221,11 @@ void RAS_OpenGLDebugDraw::Flush(RAS_Rasterizer *rasty, RAS_ICanvas *canvas, RAS_
222221

223222
glBindVertexArray(m_vaos[FRUSTUMS_LINE_VAO]);
224223
GPU_shader_bind(m_frustumLineShader);
225-
glDrawElementsInstanced(GL_LINES, 24, GL_UNSIGNED_BYTE, nullptr, numfrustums);
224+
glDrawElementsInstancedARB(GL_LINES, 24, GL_UNSIGNED_BYTE, nullptr, numfrustums);
226225

227226
glBindVertexArray(m_vaos[FRUSTUMS_SOLID_VAO]);
228227
GPU_shader_bind(m_frustumSolidShader);
229-
glDrawElementsInstanced(GL_TRIANGLES, 36, GL_UNSIGNED_BYTE, (const void *)(sizeof(GLubyte) * 24), numfrustums);
228+
glDrawElementsInstancedARB(GL_TRIANGLES, 36, GL_UNSIGNED_BYTE, (const void *)(sizeof(GLubyte) * 24), numfrustums);
230229
}
231230

232231
const std::vector<RAS_DebugDraw::Aabb>& aabbs = debugDraw->m_aabbs;
@@ -236,7 +235,7 @@ void RAS_OpenGLDebugDraw::Flush(RAS_Rasterizer *rasty, RAS_ICanvas *canvas, RAS_
236235

237236
glBindVertexArray(m_vaos[AABB_VAO]);
238237
GPU_shader_bind(m_frustumLineShader);
239-
glDrawElementsInstanced(GL_LINES, 24, GL_UNSIGNED_BYTE, nullptr, numaabbs);
238+
glDrawElementsInstancedARB(GL_LINES, 24, GL_UNSIGNED_BYTE, nullptr, numaabbs);
240239
}
241240

242241
const unsigned int width = canvas->GetWidth();
@@ -261,7 +260,7 @@ void RAS_OpenGLDebugDraw::Flush(RAS_Rasterizer *rasty, RAS_ICanvas *canvas, RAS_
261260

262261
glBindVertexArray(m_vaos[BOX_2D_VAO]);
263262
GPU_shader_bind(m_box2dShader);
264-
glDrawArraysInstanced(GL_TRIANGLE_FAN, 0, 4, numboxes);
263+
glDrawArraysInstancedARB(GL_TRIANGLE_FAN, 0, 4, numboxes);
265264
}
266265

267266
glBindVertexArray(0);

0 commit comments

Comments
 (0)