]> git.cworth.org Git - apitrace/blobdiff - glretrace.py
Better directory name.
[apitrace] / glretrace.py
index 3e2e9220780a44ad7434f4ac71987bc3c6bcb3d9..29ba78f8cda799be06416cf79d529a4d3d4a44e7 100644 (file)
@@ -31,10 +31,29 @@ from retrace import Retracer
 
 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",
@@ -82,13 +101,13 @@ static void display(void) {
    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
@@ -98,11 +117,11 @@ static void display(void) {
       
       retrace_call(*call);
 
-      if (call->name == "glBegin") {
+      if (call->name() == "glBegin") {
          insideGlBeginEnd = true;
       }
       
-      if (call->name == "glEnd") {
+      if (call->name() == "glEnd") {
          insideGlBeginEnd = false;
       }