/* Simple case for reporting GL bugs */ /* Wei Wang #include #include #include #define WIN_WIDTH 128 #define WIN_HEIGHT 128 #define MAX_STRIDE 128 static GLfloat vbuf[] = {5.5, 6.5, 5.5, 12.5, 10.5, 6.5, 10.5, 12.5}; static GLuint elemList[] = {3, 2, 0, 1}; void init() { glDisable(GL_DITHER); glVertexPointer (2, GL_FLOAT, 0, vbuf); glEnableClientState (GL_VERTEX_ARRAY); glEnableClientState (GL_COLOR_ARRAY); } void test(){ char buf[16]; GLuint array_id[2]; int i; glGenBuffersARB(2, array_id); glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); glVertexPointer (2, GL_FLOAT, 0, vbuf); glEnableClientState (GL_VERTEX_ARRAY); glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, array_id[1]); glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 4 * sizeof(GLuint), elemList, GL_STATIC_DRAW_ARB); glBindBufferARB(GL_ARRAY_BUFFER_ARB, array_id[0]); glColorPointer (3, GL_BYTE, 0, 0); glEnableClientState (GL_COLOR_ARRAY); for (i = 0; i < 16; i++) buf[i] = 0; glBufferDataARB(GL_ARRAY_BUFFER_ARB, MAX_STRIDE * 4 * sizeof(char), buf, GL_STATIC_DRAW_ARB); glClear (GL_COLOR_BUFFER_BIT); glNewList(1, GL_COMPILE); glDrawElements (GL_QUADS, 4, GL_UNSIGNED_INT, 0); glEndList (); glCallList (1); glDeleteLists (1, 1); exit(0); } void display() { glViewport(0, 0, WIN_WIDTH, WIN_HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, WIN_WIDTH, 0, WIN_HEIGHT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); test(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA); glutInitWindowSize (WIN_WIDTH, WIN_HEIGHT); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init(); glutDisplayFunc(display); glutMainLoop(); }