class GlRetracer(Retracer):
+ def filter_function(self, function):
+ return function.name not in [
+ "glNewBufferRegion",
+ "glDeleteBufferRegion",
+ "glReadBufferRegion",
+ "glDrawBufferRegion",
+ "glBufferRegionEnabled",
+ ]
+
+ def call_function(self, function):
+ if function.name in ("glDrawArrays", "glDrawElements", "glDrawRangeElements", "glMultiDrawElements"):
+ print ' GLint __array_buffer = 0;'
+ print ' glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);'
+ print ' if (!__array_buffer) {'
+ self.fail_function(function)
+ print ' }'
+
+ Retracer.call_function(self, function)
+
def extract_arg(self, function, arg, arg_type, lvalue, rvalue):
if function.name in [
- "glColorPointer"
- "glEdgeFlagPointer"
+ "glColorPointer",
+ "glEdgeFlagPointer",
"glIndexPointer",
"glNormalPointer",
"glTexCoordPointer",
Trace::Call *call;
while ((call = parser.parse_call())) {
- if (call->name == "glFlush") {
+ if (call->name() == "glFlush") {
glFlush();
return;
}
- if (call->name == "glXSwapBuffers" ||
- call->name == "wglSwapBuffers") {
+ if (call->name() == "glXSwapBuffers" ||
+ call->name() == "wglSwapBuffers") {
if (double_buffer)
glutSwapBuffers();
else
retrace_call(*call);
- if (call->name == "glBegin") {
+ if (call->name() == "glBegin") {
insideGlBeginEnd = true;
}
- if (call->name == "glEnd") {
+ if (call->name() == "glEnd") {
insideGlBeginEnd = false;
}