summaryrefslogtreecommitdiff
path: root/paddle.c
diff options
context:
space:
mode:
Diffstat (limited to 'paddle.c')
-rw-r--r--paddle.c76
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
+}