diff options
Diffstat (limited to 'paddle.c')
-rw-r--r-- | paddle.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/paddle.c b/paddle.c new file mode 100644 index 0000000..2f6bace --- /dev/null +++ b/paddle.c @@ -0,0 +1,76 @@ +#include "SDL.h" +#include "SDL_opengl.h" + +#include "glpong3d.h" +#include "paddle.h" + +void +GLPong_PaddleDrawBack(const Paddle_t * paddle) { + glLoadIdentity(); + glBindTexture(GL_TEXTURE_2D, paddle_texture); + glEnable(GL_TEXTURE_2D); + glColor3f(paddle->r, paddle->g, paddle->b); + glTranslatef(paddle->coord.x, paddle->coord.y, paddle->coord.z); + glBegin(GL_QUADS); + glTexCoord2f(0.832f, 1.0f); glVertex2f(paddle->w / 2, paddle->h / 2); /* Upper Right */ + glTexCoord2f(0.168f, 1.0f); glVertex2f(-paddle->w / 2, paddle->h / 2); /* Upper Left */ + glTexCoord2f(0.168f, 0.0f); glVertex2f(-paddle->w / 2, -paddle->h / 2); /* Lower Left */ + glTexCoord2f(0.832f, 0.0f); glVertex2f(paddle->w / 2, -paddle->h / 2); /* Lower Right */ + glEnd(); + glDisable(GL_TEXTURE_2D); + +#ifdef DEBUG + glLoadIdentity(); + glColor3f(1.0f, 0.0f, 0.0f); + glTranslatef(paddle->coord.x, paddle->coord.y, paddle->coord.z); + glBegin(GL_POINTS); + glVertex3f(0.0f, 0.0f, 0.0f); + glEnd(); +#endif +} + +void +GLPong_PaddleDrawFront(const Paddle_t * paddle) { + glLoadIdentity(); + glBindTexture(GL_TEXTURE_2D, paddle_texture); + glEnable(GL_TEXTURE_2D); + glColor3f(paddle->r, paddle->g, paddle->b); + glTranslatef(paddle->coord.x + (paddle->w / 2), paddle->coord.y + (paddle->h / 2), paddle->coord.z); /* XXX: why does this line differ from above? */ + glBegin(GL_QUADS); + glTexCoord2f(0.168f, 1.0f); glVertex2f(paddle->w / 2, paddle->h / 2); /* Upper Right */ + glTexCoord2f(0.832f, 1.0f); glVertex2f(-paddle->w / 2, paddle->h / 2); /* Upper Left */ + glTexCoord2f(0.832f, 0.0f); glVertex2f(-paddle->w / 2, -paddle->h / 2); /* Lower Left */ + glTexCoord2f(0.168f, 0.0f); glVertex2f(paddle->w / 2, -paddle->h / 2); /* Lower Right */ + glEnd(); + glDisable(GL_TEXTURE_2D); + +#ifdef DEBUG + /* Lower Left */ + glLoadIdentity(); + glColor3f(1.0f, 0.0f, 0.0f); + glTranslatef(paddle->coord.x, paddle->coord.y, paddle->coord.z); + glBegin(GL_POINTS); + glVertex3f(0.0f, 0.0f, 0.0f); + glEnd(); + + /* Lower Right */ + glLoadIdentity(); + glTranslatef(paddle->coord.x + paddle->w, paddle->coord.y, paddle->coord.z); + glBegin(GL_POINTS); + glVertex3f(0.0f, 0.0f, 0.0f); + glEnd(); + + /* Top Right */ + glLoadIdentity(); + glTranslatef(paddle->coord.x + paddle->w, paddle->coord.y + paddle->h, paddle->coord.z); + glBegin(GL_POINTS); + glVertex3f(0.0f, 0.0f, 0.0f); + glEnd(); + /* Top Left */ + glLoadIdentity(); + glTranslatef(paddle->coord.x, paddle->coord.y + paddle->h, paddle->coord.z); + glBegin(GL_POINTS); + glVertex3f(0.0f, 0.0f, 0.0f); + glEnd(); +#endif +} |