};
- glGenBuffersARB_func(1, &VBO);
- glBindBufferARB_func(GL_ARRAY_BUFFER_ARB, VBO);
+
+static void
+SetupVertexBuffer(void)
+{
- glBufferDataARB_func(GL_ARRAY_BUFFER_ARB,
++ glGenBuffersARB(1, &VBO);
++ glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO);
+
- glBufferSubDataARB_func(GL_ARRAY_BUFFER_ARB,
++ glBufferDataARB(GL_ARRAY_BUFFER_ARB,
+ sizeof(VertCoords) +
+ sizeof(Tex0Coords) +
+ sizeof(Tex1Coords),
+ NULL,
+ GL_STATIC_DRAW_ARB);
+
+ /* non-interleaved vertex arrays */
+
- glBufferSubDataARB_func(GL_ARRAY_BUFFER_ARB,
++ glBufferSubDataARB(GL_ARRAY_BUFFER_ARB,
+ 0, /* offset */
+ sizeof(VertCoords), /* size */
+ VertCoords); /* data */
+
- glBufferSubDataARB_func(GL_ARRAY_BUFFER_ARB,
++ glBufferSubDataARB(GL_ARRAY_BUFFER_ARB,
+ sizeof(VertCoords), /* offset */
+ sizeof(Tex0Coords), /* size */
+ Tex0Coords); /* data */
+
- glBindBufferARB_func(GL_ARRAY_BUFFER_ARB, 0);
++ glBufferSubDataARB(GL_ARRAY_BUFFER_ARB,
+ sizeof(VertCoords) +
+ sizeof(Tex0Coords), /* offset */
+ sizeof(Tex1Coords), /* size */
+ Tex1Coords); /* data */
+
++ glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
+}
+
+
static void
DrawPolygonArray(void)
{
- glBindBufferARB_func(GL_ARRAY_BUFFER_ARB, VBO);
+ void *vertPtr, *tex0Ptr, *tex1Ptr;
+
+ if (UseVBO) {
- glBindBufferARB_func(GL_ARRAY_BUFFER_ARB, 0);
++ glBindBufferARB(GL_ARRAY_BUFFER_ARB, VBO);
+ vertPtr = (void *) 0;
+ tex0Ptr = (void *) sizeof(VertCoords);
+ tex1Ptr = (void *) (sizeof(VertCoords) + sizeof(Tex0Coords));
+ }
+ else {
++ glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
+ vertPtr = VertCoords;
+ tex0Ptr = Tex0Coords;
+ tex1Ptr = Tex1Coords;
+ }
+
if (VertCoord_attr >= 0) {
- glVertexAttribPointer_func(VertCoord_attr, 2, GL_FLOAT, GL_FALSE,
- 0, vertPtr);
- glEnableVertexAttribArray_func(VertCoord_attr);
+ glVertexAttribPointer(VertCoord_attr, 2, GL_FLOAT, GL_FALSE,
+ 0, VertCoords);
+ glEnableVertexAttribArray(VertCoord_attr);
}
else {
- glVertexPointer(2, GL_FLOAT, 0, VertCoords);
- glEnable(GL_VERTEX_ARRAY);
+ glVertexPointer(2, GL_FLOAT, 0, vertPtr);
+ glEnableClientState(GL_VERTEX_ARRAY);
}
- glVertexAttribPointer_func(TexCoord0_attr, 2, GL_FLOAT, GL_FALSE,
- 0, tex0Ptr);
- glEnableVertexAttribArray_func(TexCoord0_attr);
+ glVertexAttribPointer(TexCoord0_attr, 2, GL_FLOAT, GL_FALSE,
+ 0, Tex0Coords);
+ glEnableVertexAttribArray(TexCoord0_attr);
- glVertexAttribPointer_func(TexCoord1_attr, 2, GL_FLOAT, GL_FALSE,
- 0, tex1Ptr);
- glEnableVertexAttribArray_func(TexCoord1_attr);
+ glVertexAttribPointer(TexCoord1_attr, 2, GL_FLOAT, GL_FALSE,
+ 0, Tex1Coords);
+ glEnableVertexAttribArray(TexCoord1_attr);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
- glBindBufferARB_func(GL_ARRAY_BUFFER_ARB, 0);
+
++ glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
}
/*exit(1);*/
}
printf("GL_RENDERER = %s\n",(const char *) glGetString(GL_RENDERER));
- GetExtensionFuncs();
+ printf("Usage:\n");
+ printf(" a - toggle arrays vs. immediate mode rendering\n");
+ printf(" v - toggle VBO usage for array rendering\n");
+ printf(" z/Z - change viewing distance\n");
+ printf(" SPACE - toggle animation\n");
+ printf(" Esc - exit\n");
InitTextures();
InitPrograms();