summaryrefslogtreecommitdiff
path: root/paddle.c
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2010-01-22 01:21:30 -0500
committerMatt Turner <mattst88@gmail.com>2011-04-04 17:14:35 -0400
commitbf004a04b33e1172c5d9871dc4632ecadf491cd7 (patch)
treebb6ed01fa227952e8cb63b5852b5a54b049794e9 /paddle.c
parent3aa0e202c360cbf69bfa26fe23daf43f5ef695a1 (diff)
Split paddle and ball drawing into separate functions
Signed-off-by: Matt Turner <mattst88@gmail.com>
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
+}