| @@ -109,7 +109,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| data->image[0][(j * 32 + i) * 4 + 0] = wb; | |||
| data->image[0][(j * 32 + i) * 4 + 1] = wb; | |||
| data->image[0][(j * 32 + i) * 4 + 2] = wb; | |||
| data->image[0][(j * 32 + i) * 4 + 3] = wb; | |||
| data->image[0][(j * 32 + i) * 4 + 3] = 0xff; | |||
| } | |||
| /* Use GL_RGBA instead of 4 for the internal format (Android) */ | |||
| glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0, | |||
| @@ -154,6 +154,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| "}"); | |||
| /* Quad #6: apply texture in fragment shader */ | |||
| /* Quad #8: vertex buffer, apply texture in fragment shader */ | |||
| data->shader[2] = Shader::Create( | |||
| "void main()" | |||
| "{" | |||
| @@ -264,6 +265,8 @@ void DebugQuad::TickDraw(float deltams) | |||
| glBufferData(GL_ARRAY_BUFFER, 12 * sizeof(GLfloat), tcs, GL_STATIC_DRAW); | |||
| glVertexAttribPointer(attr_tex, 2, GL_FLOAT, GL_FALSE, 0, 0); | |||
| glBindBuffer(GL_ARRAY_BUFFER, 0); | |||
| glDrawArrays(GL_TRIANGLES, 0, 6); | |||
| glDisableVertexAttribArray(attr_pos); | |||
| @@ -277,6 +280,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| glMatrixMode(GL_MODELVIEW); | |||
| glLoadIdentity(); | |||
| glDisable(GL_TEXTURE_2D); | |||
| glBindBuffer(GL_ARRAY_BUFFER, 0); | |||
| glUseProgram(0); | |||
| /* Prepare our quad coordinates */ | |||
| @@ -343,6 +347,7 @@ void DebugQuad::TickDraw(float deltams) | |||
| glTexCoord2f(f1, f3); | |||
| glVertex3f(data->aa.x, data->bb.y, 0.0f); | |||
| glEnd(); | |||
| glDisable(GL_TEXTURE_2D); | |||
| Advance(); | |||
| @@ -405,6 +410,51 @@ void DebugQuad::TickDraw(float deltams) | |||
| glVertex3f(data->aa.x, data->bb.y, 0.0f); | |||
| glEnd(); | |||
| glUseProgram(0); | |||
| glDisable(GL_TEXTURE_2D); | |||
| Advance(); | |||
| /* Quad #7: simple vertex buffer */ | |||
| GLfloat const v1[] = { 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 }; | |||
| GLfloat const c1[] = { f1, f2, f3, f4, f2, f1, f3, f1, f4, | |||
| f3, f1, f4, f4, f3, f2, f1, f2, f3 }; | |||
| glEnableClientState(GL_COLOR_ARRAY); | |||
| glEnableClientState(GL_VERTEX_ARRAY); | |||
| glColorPointer(3, GL_FLOAT, 0, c1); | |||
| glVertexPointer(3, GL_FLOAT, 0, v1); | |||
| glDrawArrays(GL_TRIANGLES, 0, 6); | |||
| glDisableClientState(GL_VERTEX_ARRAY); | |||
| glDisableClientState(GL_COLOR_ARRAY); | |||
| Advance(); | |||
| /* Quad #8: vertex buffer, apply texture in fragment shader */ | |||
| data->shader[2]->Bind(); | |||
| GLfloat const v2[] = { 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 }; | |||
| GLfloat const t2[] = { f1, f3, f3, f2, f2, f4, f2, f4, f4, f1, f1, f3 }; | |||
| glEnableClientState(GL_TEXTURE_COORD_ARRAY); | |||
| glEnableClientState(GL_VERTEX_ARRAY); | |||
| glTexCoordPointer(2, GL_FLOAT, 0, t2); | |||
| glVertexPointer(3, GL_FLOAT, 0, v2); | |||
| glDrawArrays(GL_TRIANGLES, 0, 6); | |||
| glDisableClientState(GL_VERTEX_ARRAY); | |||
| glDisableClientState(GL_TEXTURE_COORD_ARRAY); | |||
| Advance(); | |||