00001
00002
00003
00004
00005
00006
00007
00008 #ifndef GRAPHICDEFINITIONS_H_
00009 #define GRAPHICDEFINITIONS_H_
00010
00011 #include "../Common/Constants.h"
00012
00013 #include <GL/gl.h>
00014 #include <GL/glut.h>
00015
00016 enum Graphic
00017 {
00018 SNOOK3D_BALL = 1,
00019 SNOOK3D_BALL_SHADOW,
00020 SNOOK3D_TABLE,
00021 SNOOK3D_TABLE_FRAME,
00022 SNOOK3D_FLOOR,
00023 SNOOK3D_WALL
00024 };
00025
00026 inline void loadGraphicDefinitions()
00027 {
00028 glNewList (SNOOK3D_BALL, GL_COMPILE);
00029 glutSolidSphere(BALLRADIUS,20,20);
00030 glEndList ();
00031
00032 glNewList (SNOOK3D_BALL_SHADOW, GL_COMPILE);
00033 glDisable(GL_LIGHTING);
00034 glColor3f(0.05,0.05,0.05);
00035 glutSolidSphere(BALLRADIUS,20,20);
00036 glEndList ();
00037
00038
00039
00040 glNewList(SNOOK3D_TABLE_FRAME,GL_COMPILE);
00041 glBegin(GL_QUADS);
00042 glNormal3f(0.0,1.0,0.0);
00043 glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, CUSHIONHEIGHT, TABLELENGTH/2);
00044 glTexCoord2f(1.0f, 0.0f); glVertex3f(TABLEWIDTH/2, CUSHIONHEIGHT, TABLELENGTH/2);
00045 glTexCoord2f(1.0f, 1.0f); glVertex3f(TABLEWIDTH/2, CUSHIONHEIGHT, TABLELENGTH/2+CUSHIONSIZE);
00046 glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, CUSHIONHEIGHT, TABLELENGTH/2+CUSHIONSIZE);
00047
00048 glNormal3f(0.0,1.0,0.0);
00049 glTexCoord2f(0.0f, 0.0f); glVertex3f(TABLEWIDTH/2, CUSHIONHEIGHT, 0.0);
00050 glTexCoord2f(1.0f, 0.0f); glVertex3f(TABLEWIDTH/2, CUSHIONHEIGHT, TABLELENGTH/2+CUSHIONSIZE);
00051 glTexCoord2f(1.0f, 1.0f); glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, CUSHIONHEIGHT, TABLELENGTH/2+CUSHIONSIZE);
00052 glTexCoord2f(0.0f, 1.0f); glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, CUSHIONHEIGHT, 0);
00053
00054 glNormal3f(1.0,0.0,0.0);
00055 glTexCoord2f(0.0f, 0.0f);glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, -0.3, 0.0);
00056 glTexCoord2f(1.0f, 0.0f);glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, CUSHIONHEIGHT, 0.0);
00057 glTexCoord2f(1.0f, 1.0f);glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, CUSHIONHEIGHT, TABLELENGTH/2+CUSHIONSIZE);
00058 glTexCoord2f(0.0f, 1.0f);glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, -0.3, TABLELENGTH/2+CUSHIONSIZE);
00059
00060 glNormal3f(0.0,0.0,1.0);
00061 glVertex3f(0.0f, -0.3, TABLELENGTH/2+CUSHIONSIZE);
00062 glVertex3f(0.0f, CUSHIONHEIGHT, TABLELENGTH/2+CUSHIONSIZE);
00063 glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, CUSHIONHEIGHT, TABLELENGTH/2+CUSHIONSIZE);
00064 glVertex3f(TABLEWIDTH/2+CUSHIONSIZE, -0.3f, TABLELENGTH/2+CUSHIONSIZE);
00065 glEnd();
00066
00067 glEndList();
00068
00069 glNewList(SNOOK3D_TABLE,GL_COMPILE);
00070
00071 glEnable(GL_LIGHTING);
00072 glBegin(GL_QUADS);
00073
00074
00075
00076
00077 glNormal3f(0.0,1.0,0.0);
00078 glTexCoord2f(0.0f, 0.0f);
00079 glVertex3f(0.0f, 0.0f, 0.0f);
00080 glTexCoord2f(5.0f, 0.0f);
00081 glVertex3f(0.0f, 0.0f, TABLELENGTH/2);
00082 glTexCoord2f(5.0f, 5.0f);
00083 glVertex3f(TABLEWIDTH/2, .0f, TABLELENGTH/2);
00084 glTexCoord2f(0.0f, 5.0f);
00085 glVertex3f(TABLEWIDTH/2, 0.0f, 0.0f);
00086
00087
00088 glNormal3f(-1.0,0.0,0.0);
00089 glVertex3f(TABLEWIDTH/2, 0.0, 0.0);
00090 glVertex3f(TABLEWIDTH/2, CUSHIONHEIGHT, 0.0);
00091 glVertex3f(TABLEWIDTH/2, CUSHIONHEIGHT, TABLELENGTH/2);
00092 glVertex3f(TABLEWIDTH/2, 0.0, TABLELENGTH/2);
00093
00094 glNormal3f(0.0,0.0,-1.0);
00095 glVertex3f(0.0, 0.0, TABLELENGTH/2);
00096 glVertex3f(0.0, CUSHIONHEIGHT, TABLELENGTH/2);
00097 glVertex3f(TABLEWIDTH/2, CUSHIONHEIGHT, TABLELENGTH/2);
00098 glVertex3f(TABLEWIDTH/2, 0.0, TABLELENGTH/2);
00099
00100 glEnd();
00101 glDisable(GL_LIGHTING);
00102
00103 glColor3f(1,1,1);
00104 glEndList();
00105
00106 glNewList(SNOOK3D_FLOOR,GL_COMPILE);
00107
00108 glBegin(GL_QUADS);
00109 glNormal3f(0.0,1.0,0.0);
00110 glTexCoord2f(0.0f, 0.0f); glVertex3f(-3.0f, 0.0f, -3.0f);
00111 glTexCoord2f(0.0f, 3.0f); glVertex3f(-3.0f, 0.0f, 3.0);
00112 glTexCoord2f(3.0f, 3.0f); glVertex3f(3.0, .0f, 3.0);
00113 glTexCoord2f(3.0f, 0.0f); glVertex3f(3.0, 0.0f, -3.0f);
00114
00115 glEnd();
00116 glEndList();
00117
00118
00119
00120 glNewList(SNOOK3D_WALL,GL_COMPILE);
00121
00122 glBegin(GL_QUADS);
00123
00124 glNormal3f(0.0,1.0,0.0);
00125 glTexCoord2f(0.0f, 0.0f); glVertex3f(-5.0f, 0.0f, -5.0f);
00126 glTexCoord2f(0.0f, 1.0f); glVertex3f(-5.0f, 5.0f, -5.0);
00127 glTexCoord2f(1.0f, 1.0f); glVertex3f(5.0, 5.0f, -5.0);
00128 glTexCoord2f(1.0f, 0.0f); glVertex3f(5.0, 0.0f, -5.0f);
00129
00130 glEnd();
00131 glEndList();
00132
00133
00134 }
00135
00136
00137
00138
00139 #endif