| @@ -334,7 +334,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| #endif | #endif | ||||
| /* | /* | ||||
| * Test #7: vertex buffer | |||||
| * Test #7: vertex buffer + per-vertex coloring | |||||
| * Renders a multicolored square with varying colors. | * Renders a multicolored square with varying colors. | ||||
| */ | */ | ||||
| GLfloat const vertices1[] = { data->aa.x, data->bb.y, 0.0f, | GLfloat const vertices1[] = { data->aa.x, data->bb.y, 0.0f, | ||||
| @@ -353,12 +353,41 @@ void DebugQuad::TickDraw(float deltams) | |||||
| glDisableClientState(GL_VERTEX_ARRAY); | glDisableClientState(GL_VERTEX_ARRAY); | ||||
| glDisableClientState(GL_COLOR_ARRAY); | glDisableClientState(GL_COLOR_ARRAY); | ||||
| glUseProgram(0); | |||||
| Advance(); | Advance(); | ||||
| /* | /* | ||||
| * Test #8: vertex buffer + texture & color in 1.10 fragment shader | |||||
| * Test #8: vertex buffer + per-vertex coloring + texture | |||||
| * Renders a multicolored square with varying colors multiplied with an | |||||
| * animated distorted checkerboard. | |||||
| */ | |||||
| GLfloat const vertices2[] = { data->aa.x, data->bb.y, 0.0f, | |||||
| data->bb.x, data->bb.y, 0.0f, | |||||
| data->bb.x, data->aa.y, 0.0f, | |||||
| data->bb.x, data->aa.y, 0.0f, | |||||
| data->aa.x, data->aa.y, 0.0f, | |||||
| data->aa.x, data->bb.y, 0.0f }; | |||||
| glEnable(GL_TEXTURE_2D); | |||||
| glBindTexture(GL_TEXTURE_2D, data->texture[0]); | |||||
| glEnableClientState(GL_COLOR_ARRAY); | |||||
| glEnableClientState(GL_TEXTURE_COORD_ARRAY); | |||||
| glEnableClientState(GL_VERTEX_ARRAY); | |||||
| glColorPointer(3, GL_FLOAT, 0, colors); | |||||
| glTexCoordPointer(2, GL_FLOAT, 0, texcoords); | |||||
| glVertexPointer(3, GL_FLOAT, 0, vertices2); | |||||
| glDrawArrays(GL_TRIANGLES, 0, 6); | |||||
| glDisableClientState(GL_VERTEX_ARRAY); | |||||
| glDisableClientState(GL_TEXTURE_COORD_ARRAY); | |||||
| glDisableClientState(GL_COLOR_ARRAY); | |||||
| glDisable(GL_TEXTURE_2D); | |||||
| Advance(); | |||||
| /* | |||||
| * Test #9: vertex buffer + texture & color in 1.10 fragment shader | |||||
| * Renders a multicolored square with varying colors xored with an | * Renders a multicolored square with varying colors xored with an | ||||
| * animated distorted checkerboard. | * animated distorted checkerboard. | ||||
| */ | */ | ||||
| @@ -383,7 +412,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| "}"); | "}"); | ||||
| data->shader[3]->Bind(); | data->shader[3]->Bind(); | ||||
| GLfloat const vertices2[] = { data->aa.x, data->bb.y, 0.0f, | |||||
| GLfloat const vertices3[] = { data->aa.x, data->bb.y, 0.0f, | |||||
| data->bb.x, data->bb.y, 0.0f, | data->bb.x, data->bb.y, 0.0f, | ||||
| data->bb.x, data->aa.y, 0.0f, | data->bb.x, data->aa.y, 0.0f, | ||||
| data->bb.x, data->aa.y, 0.0f, | data->bb.x, data->aa.y, 0.0f, | ||||
| @@ -394,7 +423,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| glEnableClientState(GL_COLOR_ARRAY); | glEnableClientState(GL_COLOR_ARRAY); | ||||
| glEnableClientState(GL_TEXTURE_COORD_ARRAY); | glEnableClientState(GL_TEXTURE_COORD_ARRAY); | ||||
| glVertexPointer(3, GL_FLOAT, 0, vertices2); | |||||
| glVertexPointer(3, GL_FLOAT, 0, vertices3); | |||||
| glColorPointer(3, GL_FLOAT, 0, colors); | glColorPointer(3, GL_FLOAT, 0, colors); | ||||
| glTexCoordPointer(2, GL_FLOAT, 0, texcoords); | glTexCoordPointer(2, GL_FLOAT, 0, texcoords); | ||||
| glDrawArrays(GL_TRIANGLES, 0, 6); | glDrawArrays(GL_TRIANGLES, 0, 6); | ||||
| @@ -407,7 +436,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| Advance(); | Advance(); | ||||
| /* | /* | ||||
| * Test #8: vertex buffer + texture & color in 1.20 fragment shader | |||||
| * Test #10: vertex buffer + texture & color in 1.20 fragment shader | |||||
| * Renders a multicolored square with varying colors xored with an | * Renders a multicolored square with varying colors xored with an | ||||
| * animated distorted checkerboard. | * animated distorted checkerboard. | ||||
| */ | */ | ||||
| @@ -439,7 +468,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| data->attr[2] = data->shader[4]->GetAttribLocation("in_MultiTexCoord0"); | data->attr[2] = data->shader[4]->GetAttribLocation("in_MultiTexCoord0"); | ||||
| } | } | ||||
| data->shader[4]->Bind(); | data->shader[4]->Bind(); | ||||
| GLfloat const vertices3[] = { data->aa.x, data->bb.y, 0.0f, | |||||
| GLfloat const vertices4[] = { data->aa.x, data->bb.y, 0.0f, | |||||
| data->bb.x, data->bb.y, 0.0f, | data->bb.x, data->bb.y, 0.0f, | ||||
| data->bb.x, data->aa.y, 0.0f, | data->bb.x, data->aa.y, 0.0f, | ||||
| data->bb.x, data->aa.y, 0.0f, | data->bb.x, data->aa.y, 0.0f, | ||||
| @@ -449,7 +478,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| glBindVertexArray(data->array[0]); | glBindVertexArray(data->array[0]); | ||||
| glBindBuffer(GL_ARRAY_BUFFER, data->buffer[0]); | glBindBuffer(GL_ARRAY_BUFFER, data->buffer[0]); | ||||
| glBufferData(GL_ARRAY_BUFFER, sizeof(vertices3), vertices3, | |||||
| glBufferData(GL_ARRAY_BUFFER, sizeof(vertices4), vertices4, | |||||
| GL_DYNAMIC_DRAW); | GL_DYNAMIC_DRAW); | ||||
| glVertexAttribPointer(data->attr[0], 3, GL_FLOAT, GL_FALSE, 0, 0); | glVertexAttribPointer(data->attr[0], 3, GL_FLOAT, GL_FALSE, 0, 0); | ||||
| glEnableVertexAttribArray(data->attr[0]); | glEnableVertexAttribArray(data->attr[0]); | ||||
| @@ -477,7 +506,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| Advance(); | Advance(); | ||||
| /* | /* | ||||
| * Test #8: vertex buffer + texture & color in 1.30 fragment shader | |||||
| * Test #11: vertex buffer + texture & color in 1.30 fragment shader | |||||
| * Renders a multicolored square with varying colors xored with an | * Renders a multicolored square with varying colors xored with an | ||||
| * animated distorted checkerboard. | * animated distorted checkerboard. | ||||
| */ | */ | ||||
| @@ -509,7 +538,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| data->attr[5] = data->shader[4]->GetAttribLocation("in_MultiTexCoord0"); | data->attr[5] = data->shader[4]->GetAttribLocation("in_MultiTexCoord0"); | ||||
| } | } | ||||
| data->shader[5]->Bind(); | data->shader[5]->Bind(); | ||||
| GLfloat const vertices4[] = { data->aa.x, data->bb.y, 0.0f, | |||||
| GLfloat const vertices5[] = { data->aa.x, data->bb.y, 0.0f, | |||||
| data->bb.x, data->bb.y, 0.0f, | data->bb.x, data->bb.y, 0.0f, | ||||
| data->bb.x, data->aa.y, 0.0f, | data->bb.x, data->aa.y, 0.0f, | ||||
| data->bb.x, data->aa.y, 0.0f, | data->bb.x, data->aa.y, 0.0f, | ||||
| @@ -519,7 +548,7 @@ void DebugQuad::TickDraw(float deltams) | |||||
| glBindVertexArray(data->array[1]); | glBindVertexArray(data->array[1]); | ||||
| glBindBuffer(GL_ARRAY_BUFFER, data->buffer[3]); | glBindBuffer(GL_ARRAY_BUFFER, data->buffer[3]); | ||||
| glBufferData(GL_ARRAY_BUFFER, sizeof(vertices4), vertices4, | |||||
| glBufferData(GL_ARRAY_BUFFER, sizeof(vertices5), vertices5, | |||||
| GL_DYNAMIC_DRAW); | GL_DYNAMIC_DRAW); | ||||
| glVertexAttribPointer(data->attr[3], 3, GL_FLOAT, GL_FALSE, 0, 0); | glVertexAttribPointer(data->attr[3], 3, GL_FLOAT, GL_FALSE, 0, 0); | ||||
| glEnableVertexAttribArray(data->attr[3]); | glEnableVertexAttribArray(data->attr[3]); | ||||