static void test_mixed_user_and_vbo_buffers(float x1, float y1, float x2, float y2, int index) { float v3[] = { x1, y1, 0, x1, y2, 0, x2, y1, 0 }; float c3[] = { 0, 0, 1, 0, 0, 1, 0, 0, 1 }; GLuint vbo; glEnableClientState(GL_COLOR_ARRAY); if (!index) { glColorPointer(3, GL_FLOAT, 0, c3); vbo = vboVertexPointer(3, GL_FLOAT, 0, v3, sizeof(v3), 0); } else { glVertexPointer(3, GL_FLOAT, 0, v3); vbo = vboColorPointer(3, GL_FLOAT, 0, c3, sizeof(c3), 0); } glDrawArrays(GL_TRIANGLES, 0, 3); glDisableClientState(GL_COLOR_ARRAY); if (vbo) glDeleteBuffers(1, &vbo); }
static void test_int_vertices(float x1, float y1, float x2, float y2, int index) { int v2[] = { x1, y1, x1, y2, x2, y1 }; int v3[] = { x1, y1, 0, x1, y2, 0, x2, y1, 0 }; int v4[] = { x1, y1, 0, 1, x1, y2, 0, 1, x2, y1, 0, 1 }; int v2o[] = { 0, x1, y1, x1, y2, x2, y1 }; int v3o[] = { 0, x1, y1, 0, x1, y2, 0, x2, y1, 0 }; int v4o[] = { 0, x1, y1, 0, 1, x1, y2, 0, 1, x2, y1, 0, 1 }; GLuint vbo; switch (index) { case 0: vbo = vboVertexPointer(2, GL_INT, 8, v2, sizeof(v2), 0); break; case 1: vbo = vboVertexPointer(3, GL_INT, 12, v3, sizeof(v3), 0); break; case 2: vbo = vboVertexPointer(4, GL_INT, 16, v4, sizeof(v4), 0); break; case 3: vbo = vboVertexPointer(2, GL_INT, 8, v2o, sizeof(v2o), 4); break; case 4: vbo = vboVertexPointer(3, GL_INT, 12, v3o, sizeof(v3o), 4); break; case 5: vbo = vboVertexPointer(4, GL_INT, 16, v4o, sizeof(v4o), 4); break; default: vbo = 0; assert(0); break; } glDrawArrays(GL_TRIANGLES, 0, 3); if (vbo) glDeleteBuffers(1, &vbo); }
static void test_double_vertices(float x1, float y1, float x2, float y2, int index) { double v2[] = { x1, y1, x1, y2, x2, y1 }; double v3[] = { x1, y1, 0, x1, y2, 0, x2, y1, 0 }; double v4[] = { x1, y1, 0, 1, x1, y2, 0, 1, x2, y1, 0, 1 }; double v2o[] = { 0, x1, y1, x1, y2, x2, y1 }; double v3o[] = { 0, x1, y1, 0, x1, y2, 0, x2, y1, 0 }; double v4o[] = { 0, x1, y1, 0, 1, x1, y2, 0, 1, x2, y1, 0, 1 }; double v2s[] = { 0, 0, x1, y1, x1, y2, x2, y1 }; double v3s[] = { 0, 0, 0, x1, y1, 0, x1, y2, 0, x2, y1, 0 }; double v4s[] = { 0, 0, 0, 0, x1, y1, 0, 1, x1, y2, 0, 1, x2, y1, 0, 1 }; GLuint vbo; switch (index) { case 0: vbo = vboVertexPointer(2, GL_DOUBLE, 16, v2, sizeof(v2), 0); break; case 1: vbo = vboVertexPointer(3, GL_DOUBLE, 24, v3, sizeof(v3), 0); break; case 2: vbo = vboVertexPointer(4, GL_DOUBLE, 32, v4, sizeof(v4), 0); break; case 3: vbo = vboVertexPointer(2, GL_DOUBLE, 16, v2o, sizeof(v2o), 8); break; case 4: vbo = vboVertexPointer(3, GL_DOUBLE, 24, v3o, sizeof(v3o), 8); break; case 5: vbo = vboVertexPointer(4, GL_DOUBLE, 32, v4o, sizeof(v4o), 8); break; case 6: vbo = vboVertexPointer(2, GL_DOUBLE, 16, v2s, sizeof(v2s), 0); break; case 7: vbo = vboVertexPointer(3, GL_DOUBLE, 24, v3s, sizeof(v3s), 0); break; case 8: vbo = vboVertexPointer(4, GL_DOUBLE, 32, v4s, sizeof(v4s), 0); break; default: vbo = 0; assert(0); break; } if (index <= 5) glDrawArrays(GL_TRIANGLES, 0, 3); else glDrawArrays(GL_TRIANGLES, 1, 3); if (vbo) glDeleteBuffers(1, &vbo); }
static void test_half_vertices_wrapped(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, unsigned short one, int index) { unsigned short v2[] = { x1, y1, x1, y2, x2, y1 }; unsigned short v3[] = { x1, y1, 0, x1, y2, 0, x2, y1, 0 }; unsigned short v4[] = { x1, y1, 0, one, x1, y2, 0, one, x2, y1, 0, one }; unsigned short v2o[] = { 0, x1, y1, x1, y2, x2, y1 }; unsigned short v3o[] = { 0, x1, y1, 0, x1, y2, 0, x2, y1, 0 }; unsigned short v4o[] = { 0, x1, y1, 0, one, x1, y2, 0, one, x2, y1, 0, one }; GLuint vbo; switch (index) { case 0: vbo = vboVertexPointer(2, GL_HALF_FLOAT_ARB, 4, v2, sizeof(v2), 0); break; case 1: vbo = vboVertexPointer(2, GL_HALF_FLOAT_ARB, 6, v3, sizeof(v3), 0); break; case 2: vbo = vboVertexPointer(3, GL_HALF_FLOAT_ARB, 6, v3, sizeof(v3), 0); break; case 3: vbo = vboVertexPointer(2, GL_HALF_FLOAT_ARB, 8, v4, sizeof(v4), 0); break; case 4: vbo = vboVertexPointer(3, GL_HALF_FLOAT_ARB, 8, v4, sizeof(v4), 0); break; case 5: vbo = vboVertexPointer(4, GL_HALF_FLOAT_ARB, 8, v4, sizeof(v4), 0); break; case 6: vbo = vboVertexPointer(2, GL_HALF_FLOAT_ARB, 4, v2o, sizeof(v2o), 2); break; case 7: vbo = vboVertexPointer(2, GL_HALF_FLOAT_ARB, 6, v3o, sizeof(v3o), 2); break; case 8: vbo = vboVertexPointer(3, GL_HALF_FLOAT_ARB, 6, v3o, sizeof(v3o), 2); break; case 9: vbo = vboVertexPointer(2, GL_HALF_FLOAT_ARB, 8, v4o, sizeof(v4o), 2); break; case 10:vbo = vboVertexPointer(3, GL_HALF_FLOAT_ARB, 8, v4o, sizeof(v4o), 2); break; case 11:vbo = vboVertexPointer(4, GL_HALF_FLOAT_ARB, 8, v4o, sizeof(v4o), 2); break; default:vbo = 0; assert(0); break; } glDrawArrays(GL_TRIANGLES, 0, 3); if (vbo) glDeleteBuffers(1, &vbo); }