added some code to test buffer deletion
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 22 Mar 2004 16:28:02 +0000 (16:28 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 22 Mar 2004 16:28:02 +0000 (16:28 +0000)
progs/tests/bufferobj.c

index cd73737640ad091daf031f4f1202b5ebb1a81049..bbfa38a1d84d219bf38a18891bad824a32309431 100644 (file)
@@ -46,8 +46,21 @@ static void DrawObject( const struct object *obj )
    glBindBufferARB(GL_ARRAY_BUFFER_ARB, obj->BufferID);
    glVertexPointer(3, GL_FLOAT, 0, (void *) obj->VertexOffset);
    glEnable(GL_VERTEX_ARRAY);
+
+   /* test push/pop attrib */
+   /* XXX this leads to a segfault with NVIDIA's 53.36 driver */
+#if 0
+   if (1)
+   {
+      glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
+      /*glVertexPointer(3, GL_FLOAT, 0, (void *) (obj->VertexOffset + 10000));*/
+      glBindBufferARB(GL_ARRAY_BUFFER_ARB, 999999);
+      glPopClientAttrib();
+   }
+#endif
    glColorPointer(3, GL_FLOAT, 0, (void *) obj->ColorOffset);
    glEnable(GL_COLOR_ARRAY);
+
    if (obj->NumElements > 0) {
       /* indexed arrays */
       glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, obj->ElementsBufferID);
@@ -304,6 +317,20 @@ static void Init( void )
    }
    printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
 
+   /* Test buffer object deletion */
+   if (1) {
+      static GLubyte data[1000];
+      GLuint id = 999;
+      glBindBufferARB(GL_ARRAY_BUFFER_ARB, id);
+      glBufferDataARB(GL_ARRAY_BUFFER_ARB, 1000, data, GL_STATIC_DRAW_ARB);
+      glVertexPointer(3, GL_FLOAT, 0, (void *) 0);
+      glDeleteBuffersARB(1, &id);
+      /*assert(!glIsBufferARB(id));*/
+      glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
+      glVertexPointer(3, GL_FLOAT, 0, (void *) 0);
+      /*assert(!glIsBufferARB(id));*/
+   }
+
    MakeObject1(Objects + 0);
    MakeObject2(Objects + 1);
    MakeObject3(Objects + 2);