PASTEBIN
| #1 paste tool since 2002
create new paste
tools
api
archive
faq
PASTEBIN
create new paste
trending pastes
sign up
login
my alerts
my settings
my profile
Don't like ads?
PRO users
don't see any ads ;-)
Public Pastes
Untitled
4 sec ago
Untitled
9 sec ago
data, fuck yeah!
HTML 5 | 17 sec ago
Untitled
10 sec ago
Untitled
21 sec ago
heartbeat config
23 sec ago
Untitled
R | 25 sec ago
Untitled
35 sec ago
Untitled
By: a guest on
Apr 12th, 2011
| syntax:
C++
| size: 10.19 KB | hits: 51 | expires: Never
download
|
raw
|
embed
|
report abuse
|
print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
#include "Display.h"
#include "Bitmap.h"
#include "Glut/glut.h"
#include "GL/gl.h"
#include "GL/glu.h"
#include "PoolLight.h"
unsigned
int
Display
::
_textureHandles
[
_textureCount
]
;
void
Display
::
Init
(
int
argc,
char
**
argv
)
{
glutInit
(
&
argc, argv
)
;
// initializes glut
// sets display mode. These parameter set RGB colour model
// and double buffering.
glutInitWindowSize
(
800
,
600
)
;
glutInitDisplayMode
(
GLUT_RGB
|
GLUT_DOUBLE
)
;
glutCreateWindow
(
"200886396 - 3D Pool"
)
;
// Set glut callback functions
glutDisplayFunc
(
Display
::
DisplayScene
)
;
glutIdleFunc
(
Display
::
Idle
)
;
glutReshapeFunc
(
Display
::
Resize
)
;
glutKeyboardFunc
(
Display
::
Keyboard
)
;
atexit
(
Display
::
Quit
)
;
glEnable
(
GL_TEXTURE_2D
)
;
glEnable
(
GL_DEPTH_TEST
)
;
glEnable
(
GL_LIGHTING
)
;
glPointSize
(
6
)
;
PoolLight spotlight
=
PoolLight
(
GL_LIGHT0, GL_DIFFUSE,
1
,
1
,
0.5
,
false
,
0
,
0
,
-
4
)
;
spotlight.
setSpotlight
(
10
,
1
,
0
,
0
,
-
1
)
;
spotlight
=
PoolLight
(
GL_LIGHT1, GL_DIFFUSE,
1
,
1
,
0.5
,
false
,
0
,
45
,
-
4
)
;
spotlight.
setSpotlight
(
10
,
1
,
0
,
0
,
-
1
)
;
spotlight
=
PoolLight
(
GL_LIGHT2, GL_DIFFUSE,
1
,
1
,
0.5
,
false
,
0
,
-
45
,
-
4
)
;
spotlight.
setSpotlight
(
10
,
1
,
0
,
0
,
-
1
)
;
glGenTextures
(
_textureCount, _textureHandles
)
;
//Generates 1 texture, puts the ID in m_TextureID
//TODO: createTexture(Bitmap image, unsigned int textureID);
// Begin glut main loop
glutMainLoop
(
)
;
}
void
Display
::
createTexture
(
Bitmap image,
unsigned
int
textureID
)
{
glBindTexture
(
GL_TEXTURE_2D, textureID
)
;
glTexEnvf
(
GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE
)
;
glTexParameterf
(
GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST
)
;
glTexParameterf
(
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR
)
;
glTexParameterf
(
GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT
)
;
glTexParameterf
(
GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT
)
;
gluBuild2DMipmaps
(
GL_TEXTURE_2D,
3
, image.
width
, image.
height
, GL_RGB, GL_UNSIGNED_BYTE, image.
data
)
;
//Copy image to graphics card
}
void
Display
::
DisplayScene
(
)
{
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
)
;
// Clear the back buffer
//glEnable(GL_TEXTURE_2D);
drawPoolTable
(
)
;
drawPoolRim
(
)
;
drawPoolLegs
(
)
;
//drawLighting();
//drawBalls();
//drawCue();
//glDisable(GL_TEXTURE_2D);
glutSwapBuffers
(
)
;
// Swap the front and back buffers
}
void
Display
::
drawPoolTable
(
)
{
//glBindTexture(GL_TEXTURE_2D, textureHandles[0]);
glNormal3f
(
0
,
0
,
1
)
;
//Top face
glBegin
(
GL_TRIANGLE_STRIP
)
;
for
(
int
i
=
90
;
i
>=
-
90
;
i
-
=
10
)
{
glColor3f
(
0
,
.5
+
(
float
)
abs
(
i
)
/
400
,
0
)
;
glVertex3f
(
-
45
, i,
-
11
)
;
glVertex3f
(
45
, i,
-
11
)
;
}
glEnd
(
)
;
glNormal3f
(
-
1
,
0
,
0
)
;
//Left face
glBegin
(
GL_TRIANGLE_STRIP
)
;
for
(
int
i
=
90
;
i
>=
-
90
;
i
-
=
10
)
{
glColor3f
(
.3
+
(
float
)
abs
(
i
)
/
400
,
.15
+
(
float
)
abs
(
i
)
/
400
,
0
)
;
glVertex3f
(
-
45
, i,
-
11
)
;
glVertex3f
(
-
45
, i,
-
51
)
;
}
glEnd
(
)
;
glNormal3f
(
0
,
1
,
0
)
;
//Upper face
glBegin
(
GL_TRIANGLE_STRIP
)
;
for
(
int
i
=
45
;
i
>=
-
45
;
i
-
=
10
)
{
glColor3f
(
.3
+
(
float
)
abs
(
i
)
/
200
,
.15
+
(
float
)
abs
(
i
)
/
200
,
0
)
;
glVertex3f
(
i,
90
,
-
11
)
;
glVertex3f
(
i,
90
,
-
51
)
;
}
glEnd
(
)
;
glNormal3f
(
1
,
0
,
0
)
;
//Right face
glBegin
(
GL_TRIANGLE_STRIP
)
;
for
(
int
i
=
90
;
i
>=
-
90
;
i
-
=
10
)
{
glColor3f
(
.3
+
(
float
)
abs
(
i
)
/
400
,
.15
+
(
float
)
abs
(
i
)
/
400
,
0
)
;
glVertex3f
(
45
, i,
-
11
)
;
glVertex3f
(
45
, i,
-
51
)
;
}
glEnd
(
)
;
glNormal3f
(
0
,
-
1
,
0
)
;
//Lower face
glBegin
(
GL_TRIANGLE_STRIP
)
;
for
(
int
i
=
45
;
i
>=
-
45
;
i
-
=
10
)
{
glColor3f
(
.3
+
(
float
)
abs
(
i
)
/
200
,
.15
+
(
float
)
abs
(
i
)
/
200
,
0
)
;
glVertex3f
(
i,
-
90
,
-
11
)
;
glVertex3f
(
i,
-
90
,
-
51
)
;
}
glEnd
(
)
;
glNormal3f
(
0
,
0
,
-
1
)
;
//Bottom face
glBegin
(
GL_TRIANGLE_STRIP
)
;
for
(
int
i
=
90
;
i
>=
-
90
;
i
-
=
10
)
{
glColor3f
(
.3
+
(
float
)
abs
(
i
)
/
400
,
.15
+
(
float
)
abs
(
i
)
/
400
,
0
)
;
glVertex3f
(
-
45
, i,
-
51
)
;
glVertex3f
(
45
, i,
-
51
)
;
}
glEnd
(
)
;
}
void
Display
::
drawPoolRim
(
)
{
//glBindTexture(GL_TEXTURE_2D, textureHandles[0]);
//Upper cuboid
glBegin
(
GL_TRIANGLE_STRIP
)
;
glColor3f
(
0.2
,
0
,
0
)
;
//Top face
glNormal3f
(
0
,
0
,
1
)
;
glVertex3f
(
-
45
,
90
,
-
5
)
;
glVertex3f
(
45
,
90
,
-
5
)
;
glVertex3f
(
-
45
,
80
,
-
5
)
;
glVertex3f
(
45
,
80
,
-
5
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
-
45
,
80
,
-
11
)
;
glVertex3f
(
45
,
80
,
-
11
)
;
//Bottom face
glNormal3f
(
0
,
0
,
-
1
)
;
glVertex3f
(
-
45
,
90
,
-
11
)
;
glVertex3f
(
45
,
90
,
-
11
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
-
45
,
90
,
-
5
)
;
glVertex3f
(
45
,
90
,
-
5
)
;
glEnd
(
)
;
glBegin
(
GL_QUADS
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
-
45
,
90
,
-
5
)
;
glVertex3f
(
-
45
,
80
,
-
5
)
;
glVertex3f
(
-
45
,
80
,
-
11
)
;
glVertex3f
(
-
45
,
90
,
-
11
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
45
,
90
,
-
5
)
;
glVertex3f
(
45
,
80
,
-
5
)
;
glVertex3f
(
45
,
80
,
-
11
)
;
glVertex3f
(
45
,
90
,
-
11
)
;
glEnd
(
)
;
//Lower cuboid
glBegin
(
GL_TRIANGLE_STRIP
)
;
glColor3f
(
0.2
,
0
,
0
)
;
//Top face
glNormal3f
(
0
,
0
,
1
)
;
glVertex3f
(
-
45
,
-
90
,
-
5
)
;
glVertex3f
(
45
,
-
90
,
-
5
)
;
glVertex3f
(
-
45
,
-
80
,
-
5
)
;
glVertex3f
(
45
,
-
80
,
-
5
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
-
45
,
-
80
,
-
11
)
;
glVertex3f
(
45
,
-
80
,
-
11
)
;
//Bottom face
glNormal3f
(
0
,
0
,
-
1
)
;
glVertex3f
(
-
45
,
-
90
,
-
11
)
;
glVertex3f
(
45
,
-
90
,
-
11
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
-
45
,
-
90
,
-
5
)
;
glVertex3f
(
45
,
-
90
,
-
5
)
;
glEnd
(
)
;
glBegin
(
GL_QUADS
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
-
45
,
-
90
,
-
5
)
;
glVertex3f
(
-
45
,
-
80
,
-
5
)
;
glVertex3f
(
-
45
,
-
80
,
-
11
)
;
glVertex3f
(
-
45
,
-
90
,
-
11
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
45
,
-
90
,
-
5
)
;
glVertex3f
(
45
,
-
80
,
-
5
)
;
glVertex3f
(
45
,
-
80
,
-
11
)
;
glVertex3f
(
45
,
-
90
,
-
11
)
;
glEnd
(
)
;
//Left cuboid
glBegin
(
GL_TRIANGLE_STRIP
)
;
glColor3f
(
0.2
,
0
,
0
)
;
//Top face
glNormal3f
(
0
,
0
,
1
)
;
glVertex3f
(
-
35
,
80
,
-
5
)
;
glVertex3f
(
-
45
,
80
,
-
5
)
;
glVertex3f
(
-
35
,
-
80
,
-
5
)
;
glVertex3f
(
-
45
,
-
80
,
-
5
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
-
35
,
-
80
,
-
11
)
;
glVertex3f
(
-
45
,
-
80
,
-
11
)
;
//Bottom face
glNormal3f
(
0
,
0
,
-
1
)
;
glVertex3f
(
-
35
,
-
80
,
-
11
)
;
glVertex3f
(
-
45
,
80
,
-
11
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
-
35
,
80
,
-
5
)
;
glVertex3f
(
-
45
,
80
,
-
5
)
;
glEnd
(
)
;
glBegin
(
GL_QUADS
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
-
45
,
80
,
-
5
)
;
glVertex3f
(
-
45
,
-
80
,
-
5
)
;
glVertex3f
(
-
45
,
-
80
,
-
11
)
;
glVertex3f
(
-
45
,
80
,
-
11
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
-
35
,
80
,
-
5
)
;
glVertex3f
(
-
35
,
-
80
,
-
5
)
;
glVertex3f
(
-
35
,
-
80
,
-
11
)
;
glVertex3f
(
-
35
,
80
,
-
11
)
;
glEnd
(
)
;
//Right cuboid
glBegin
(
GL_TRIANGLE_STRIP
)
;
glColor3f
(
0.2
,
0
,
0
)
;
//Top face
glNormal3f
(
0
,
0
,
1
)
;
glVertex3f
(
35
,
80
,
-
5
)
;
glVertex3f
(
45
,
80
,
-
5
)
;
glVertex3f
(
35
,
-
80
,
-
5
)
;
glVertex3f
(
45
,
-
80
,
-
5
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
35
,
-
80
,
-
11
)
;
glVertex3f
(
45
,
-
80
,
-
11
)
;
//Bottom face
glNormal3f
(
0
,
0
,
-
1
)
;
glVertex3f
(
35
,
-
80
,
-
11
)
;
glVertex3f
(
45
,
80
,
-
11
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
35
,
80
,
-
5
)
;
glVertex3f
(
45
,
80
,
-
5
)
;
glEnd
(
)
;
glBegin
(
GL_QUADS
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
45
,
80
,
-
5
)
;
glVertex3f
(
45
,
-
80
,
-
5
)
;
glVertex3f
(
45
,
-
80
,
-
11
)
;
glVertex3f
(
45
,
80
,
-
11
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
35
,
80
,
-
5
)
;
glVertex3f
(
35
,
-
80
,
-
5
)
;
glVertex3f
(
35
,
-
80
,
-
11
)
;
glVertex3f
(
35
,
80
,
-
11
)
;
glEnd
(
)
;
}
void
Display
::
drawPoolLegs
(
)
{
//glBindTexture(GL_TEXTURE_2D, textureHandles[0]);
//Upper Left Leg
glBegin
(
GL_TRIANGLE_STRIP
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
-
45
,
90
,
-
51
)
;
glVertex3f
(
-
45
,
90
,
-
151
)
;
glVertex3f
(
-
25
,
90
,
-
51
)
;
glVertex3f
(
-
25
,
80
,
-
151
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
-
25
,
65
,
-
51
)
;
glVertex3f
(
-
25
,
65
,
-
151
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
-
45
,
65
,
-
51
)
;
glVertex3f
(
-
45
,
65
,
-
151
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
-
45
,
90
,
-
51
)
;
glVertex3f
(
-
45
,
90
,
-
151
)
;
glEnd
(
)
;
//Upper Right Leg
glBegin
(
GL_TRIANGLE_STRIP
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
45
,
90
,
-
51
)
;
glVertex3f
(
45
,
90
,
-
151
)
;
glVertex3f
(
25
,
90
,
-
51
)
;
glVertex3f
(
25
,
80
,
-
151
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
25
,
65
,
-
51
)
;
glVertex3f
(
25
,
65
,
-
151
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
45
,
65
,
-
51
)
;
glVertex3f
(
45
,
65
,
-
151
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
45
,
90
,
-
51
)
;
glVertex3f
(
45
,
90
,
-
151
)
;
glEnd
(
)
;
//Lower Left Leg
glBegin
(
GL_TRIANGLE_STRIP
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
-
45
,
-
90
,
-
51
)
;
glVertex3f
(
-
45
,
-
90
,
-
151
)
;
glVertex3f
(
-
25
,
-
90
,
-
51
)
;
glVertex3f
(
-
25
,
-
80
,
-
151
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
-
25
,
-
65
,
-
51
)
;
glVertex3f
(
-
25
,
-
65
,
-
151
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
-
45
,
-
65
,
-
51
)
;
glVertex3f
(
-
45
,
-
65
,
-
151
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
-
45
,
-
90
,
-
51
)
;
glVertex3f
(
-
45
,
-
90
,
-
151
)
;
glEnd
(
)
;
//Lower Right Leg
glBegin
(
GL_TRIANGLE_STRIP
)
;
//Upper face
glNormal3f
(
0
,
1
,
0
)
;
glVertex3f
(
45
,
-
90
,
-
51
)
;
glVertex3f
(
45
,
-
90
,
-
151
)
;
glVertex3f
(
25
,
-
90
,
-
51
)
;
glVertex3f
(
25
,
-
80
,
-
151
)
;
//Right face
glNormal3f
(
1
,
0
,
0
)
;
glVertex3f
(
25
,
-
65
,
-
51
)
;
glVertex3f
(
25
,
-
65
,
-
151
)
;
//Lower face
glNormal3f
(
0
,
-
1
,
0
)
;
glVertex3f
(
45
,
-
65
,
-
51
)
;
glVertex3f
(
45
,
-
65
,
-
151
)
;
//Left face
glNormal3f
(
-
1
,
0
,
0
)
;
glVertex3f
(
45
,
-
90
,
-
51
)
;
glVertex3f
(
45
,
-
90
,
-
151
)
;
glEnd
(
)
;
}
void
Display
::
Resize
(
int
w,
int
h
)
{
/* Resize is called when window is resized */
glMatrixMode
(
GL_PROJECTION
)
;
glLoadIdentity
(
)
;
glViewport
(
0
,
0
,w,h
)
;
gluPerspective
(
85
,
(
float
)
w
/
(
float
)
h,
1
,
1000
)
;
glMatrixMode
(
GL_MODELVIEW
)
;
glLoadIdentity
(
)
;
gluLookAt
(
0
,
0
,
80
,
//Camera location
0
,
0
,
-
1
,
//Where to look at
1
,
0
,
0
)
;
//Camera 'up' direction
}
void
Display
::
Idle
(
)
{
/* When nothing else is happening, idle is called.
* Simulation should be done here and then
* the display method should be called
*/
glutPostRedisplay
(
)
;
}
void
Display
::
Keyboard
(
unsigned
char
key,
int
x,
int
y
)
{
//Look();
}
void
Display
::
Look
(
)
{
}
void
Display
::
Quit
(
)
{
glDeleteTextures
(
_textureCount, _textureHandles
)
;
}
create a
new version
of this paste
RAW Paste Data
#include "Display.h" #include "Bitmap.h" #include "Glut/glut.h" #include "GL/gl.h" #include "GL/glu.h" #include "PoolLight.h" unsigned int Display::_textureHandles[_textureCount]; void Display::Init(int argc, char ** argv) { glutInit(&argc, argv); // initializes glut // sets display mode. These parameter set RGB colour model // and double buffering. glutInitWindowSize(800, 600); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutCreateWindow("200886396 - 3D Pool"); // Set glut callback functions glutDisplayFunc(Display::DisplayScene); glutIdleFunc(Display::Idle); glutReshapeFunc(Display::Resize); glutKeyboardFunc(Display::Keyboard); atexit(Display::Quit); glEnable(GL_TEXTURE_2D); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glPointSize(6); PoolLight spotlight = PoolLight(GL_LIGHT0, GL_DIFFUSE, 1, 1, 0.5, false, 0, 0, -4); spotlight.setSpotlight(10, 1, 0, 0, -1); spotlight = PoolLight(GL_LIGHT1, GL_DIFFUSE, 1, 1, 0.5, false, 0, 45, -4); spotlight.setSpotlight(10, 1, 0, 0, -1); spotlight = PoolLight(GL_LIGHT2, GL_DIFFUSE, 1, 1, 0.5, false, 0, -45, -4); spotlight.setSpotlight(10, 1, 0, 0, -1); glGenTextures(_textureCount, _textureHandles); //Generates 1 texture, puts the ID in m_TextureID //TODO: createTexture(Bitmap image, unsigned int textureID); // Begin glut main loop glutMainLoop(); } void Display::createTexture(Bitmap image, unsigned int textureID) { glBindTexture(GL_TEXTURE_2D, textureID); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); gluBuild2DMipmaps(GL_TEXTURE_2D, 3, image.width, image.height, GL_RGB, GL_UNSIGNED_BYTE, image.data); //Copy image to graphics card } void Display::DisplayScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear the back buffer //glEnable(GL_TEXTURE_2D); drawPoolTable(); drawPoolRim(); drawPoolLegs(); //drawLighting(); //drawBalls(); //drawCue(); //glDisable(GL_TEXTURE_2D); glutSwapBuffers(); // Swap the front and back buffers } void Display::drawPoolTable() { //glBindTexture(GL_TEXTURE_2D, textureHandles[0]); glNormal3f(0, 0, 1); //Top face glBegin(GL_TRIANGLE_STRIP); for (int i = 90; i >= -90; i -= 10) { glColor3f(0, .5 + (float) abs(i) / 400, 0); glVertex3f(-45, i, -11); glVertex3f(45, i, -11); } glEnd(); glNormal3f(-1, 0, 0); //Left face glBegin(GL_TRIANGLE_STRIP); for (int i = 90; i >= -90; i -= 10) { glColor3f(.3 + (float) abs(i) / 400, .15 + (float) abs(i) / 400, 0); glVertex3f(-45, i, -11); glVertex3f(-45, i, -51); } glEnd(); glNormal3f(0, 1, 0); //Upper face glBegin(GL_TRIANGLE_STRIP); for (int i = 45; i >= -45; i -= 10) { glColor3f(.3 + (float) abs(i) / 200, .15 + (float) abs(i) / 200, 0); glVertex3f(i, 90, -11); glVertex3f(i, 90, -51); } glEnd(); glNormal3f(1, 0, 0); //Right face glBegin(GL_TRIANGLE_STRIP); for (int i = 90; i >= -90; i -= 10) { glColor3f(.3 + (float) abs(i) / 400, .15 + (float) abs(i) / 400, 0); glVertex3f(45, i, -11); glVertex3f(45, i, -51); } glEnd(); glNormal3f(0, -1, 0); //Lower face glBegin(GL_TRIANGLE_STRIP); for (int i = 45; i >= -45; i -= 10) { glColor3f(.3 + (float) abs(i) / 200, .15 + (float) abs(i) / 200, 0); glVertex3f(i, -90, -11); glVertex3f(i, -90, -51); } glEnd(); glNormal3f(0, 0, -1); //Bottom face glBegin(GL_TRIANGLE_STRIP); for (int i = 90; i >= -90; i -= 10) { glColor3f(.3 + (float) abs(i) / 400, .15 + (float) abs(i) / 400, 0); glVertex3f(-45, i, -51); glVertex3f(45, i, -51); } glEnd(); } void Display::drawPoolRim() { //glBindTexture(GL_TEXTURE_2D, textureHandles[0]); //Upper cuboid glBegin(GL_TRIANGLE_STRIP); glColor3f(0.2, 0, 0); //Top face glNormal3f(0, 0, 1); glVertex3f(-45, 90, -5); glVertex3f(45, 90, -5); glVertex3f(-45, 80, -5); glVertex3f(45, 80, -5); //Lower face glNormal3f(0, -1, 0); glVertex3f(-45, 80, -11); glVertex3f(45, 80, -11); //Bottom face glNormal3f(0, 0, -1); glVertex3f(-45, 90, -11); glVertex3f(45, 90, -11); //Upper face glNormal3f(0, 1, 0); glVertex3f(-45, 90, -5); glVertex3f(45, 90, -5); glEnd(); glBegin(GL_QUADS); //Left face glNormal3f(-1, 0, 0); glVertex3f(-45, 90, -5); glVertex3f(-45, 80, -5); glVertex3f(-45, 80, -11); glVertex3f(-45, 90, -11); //Right face glNormal3f(1, 0, 0); glVertex3f(45, 90, -5); glVertex3f(45, 80, -5); glVertex3f(45, 80, -11); glVertex3f(45, 90, -11); glEnd(); //Lower cuboid glBegin(GL_TRIANGLE_STRIP); glColor3f(0.2, 0, 0); //Top face glNormal3f(0, 0, 1); glVertex3f(-45, -90, -5); glVertex3f(45, -90, -5); glVertex3f(-45, -80, -5); glVertex3f(45, -80, -5); //Lower face glNormal3f(0, -1, 0); glVertex3f(-45, -80, -11); glVertex3f(45, -80, -11); //Bottom face glNormal3f(0, 0, -1); glVertex3f(-45, -90, -11); glVertex3f(45, -90, -11); //Upper face glNormal3f(0, 1, 0); glVertex3f(-45, -90, -5); glVertex3f(45, -90, -5); glEnd(); glBegin(GL_QUADS); //Left face glNormal3f(-1, 0, 0); glVertex3f(-45, -90, -5); glVertex3f(-45, -80, -5); glVertex3f(-45, -80, -11); glVertex3f(-45, -90, -11); //Right face glNormal3f(1, 0, 0); glVertex3f(45, -90, -5); glVertex3f(45, -80, -5); glVertex3f(45, -80, -11); glVertex3f(45, -90, -11); glEnd(); //Left cuboid glBegin(GL_TRIANGLE_STRIP); glColor3f(0.2, 0, 0); //Top face glNormal3f(0, 0, 1); glVertex3f(-35, 80, -5); glVertex3f(-45, 80, -5); glVertex3f(-35, -80, -5); glVertex3f(-45, -80, -5); //Lower face glNormal3f(0, -1, 0); glVertex3f(-35, -80, -11); glVertex3f(-45, -80, -11); //Bottom face glNormal3f(0, 0, -1); glVertex3f(-35, -80, -11); glVertex3f(-45, 80, -11); //Upper face glNormal3f(0, 1, 0); glVertex3f(-35, 80, -5); glVertex3f(-45, 80, -5); glEnd(); glBegin(GL_QUADS); //Left face glNormal3f(-1, 0, 0); glVertex3f(-45, 80, -5); glVertex3f(-45, -80, -5); glVertex3f(-45, -80, -11); glVertex3f(-45, 80, -11); //Right face glNormal3f(1, 0, 0); glVertex3f(-35, 80, -5); glVertex3f(-35, -80, -5); glVertex3f(-35, -80, -11); glVertex3f(-35, 80, -11); glEnd(); //Right cuboid glBegin(GL_TRIANGLE_STRIP); glColor3f(0.2, 0, 0); //Top face glNormal3f(0, 0, 1); glVertex3f(35, 80, -5); glVertex3f(45, 80, -5); glVertex3f(35, -80, -5); glVertex3f(45, -80, -5); //Lower face glNormal3f(0, -1, 0); glVertex3f(35, -80, -11); glVertex3f(45, -80, -11); //Bottom face glNormal3f(0, 0, -1); glVertex3f(35, -80, -11); glVertex3f(45, 80, -11); //Upper face glNormal3f(0, 1, 0); glVertex3f(35, 80, -5); glVertex3f(45, 80, -5); glEnd(); glBegin(GL_QUADS); //Left face glNormal3f(-1, 0, 0); glVertex3f(45, 80, -5); glVertex3f(45, -80, -5); glVertex3f(45, -80, -11); glVertex3f(45, 80, -11); //Right face glNormal3f(1, 0, 0); glVertex3f(35, 80, -5); glVertex3f(35, -80, -5); glVertex3f(35, -80, -11); glVertex3f(35, 80, -11); glEnd(); } void Display::drawPoolLegs() { //glBindTexture(GL_TEXTURE_2D, textureHandles[0]); //Upper Left Leg glBegin(GL_TRIANGLE_STRIP); //Upper face glNormal3f(0, 1, 0); glVertex3f(-45, 90, -51); glVertex3f(-45, 90, -151); glVertex3f(-25, 90, -51); glVertex3f(-25, 80, -151); //Right face glNormal3f(1, 0, 0); glVertex3f(-25, 65, -51); glVertex3f(-25, 65, -151); //Lower face glNormal3f(0, -1, 0); glVertex3f(-45, 65, -51); glVertex3f(-45, 65, -151); //Left face glNormal3f(-1, 0, 0); glVertex3f(-45, 90, -51); glVertex3f(-45, 90, -151); glEnd(); //Upper Right Leg glBegin(GL_TRIANGLE_STRIP); //Upper face glNormal3f(0, 1, 0); glVertex3f(45, 90, -51); glVertex3f(45, 90, -151); glVertex3f(25, 90, -51); glVertex3f(25, 80, -151); //Right face glNormal3f(1, 0, 0); glVertex3f(25, 65, -51); glVertex3f(25, 65, -151); //Lower face glNormal3f(0, -1, 0); glVertex3f(45, 65, -51); glVertex3f(45, 65, -151); //Left face glNormal3f(-1, 0, 0); glVertex3f(45, 90, -51); glVertex3f(45, 90, -151); glEnd(); //Lower Left Leg glBegin(GL_TRIANGLE_STRIP); //Upper face glNormal3f(0, 1, 0); glVertex3f(-45, -90, -51); glVertex3f(-45, -90, -151); glVertex3f(-25, -90, -51); glVertex3f(-25, -80, -151); //Right face glNormal3f(1, 0, 0); glVertex3f(-25, -65, -51); glVertex3f(-25, -65, -151); //Lower face glNormal3f(0, -1, 0); glVertex3f(-45, -65, -51); glVertex3f(-45, -65, -151); //Left face glNormal3f(-1, 0, 0); glVertex3f(-45, -90, -51); glVertex3f(-45, -90, -151); glEnd(); //Lower Right Leg glBegin(GL_TRIANGLE_STRIP); //Upper face glNormal3f(0, 1, 0); glVertex3f(45, -90, -51); glVertex3f(45, -90, -151); glVertex3f(25, -90, -51); glVertex3f(25, -80, -151); //Right face glNormal3f(1, 0, 0); glVertex3f(25, -65, -51); glVertex3f(25, -65, -151); //Lower face glNormal3f(0, -1, 0); glVertex3f(45, -65, -51); glVertex3f(45, -65, -151); //Left face glNormal3f(-1, 0, 0); glVertex3f(45, -90, -51); glVertex3f(45, -90, -151); glEnd(); } void Display::Resize(int w, int h) { /* Resize is called when window is resized */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); glViewport(0,0,w,h); gluPerspective(85, (float)w/(float)h, 1, 1000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, 0, 80, //Camera location 0, 0, -1, //Where to look at 1, 0, 0); //Camera 'up' direction } void Display::Idle() { /* When nothing else is happening, idle is called. * Simulation should be done here and then * the display method should be called */ glutPostRedisplay(); } void Display::Keyboard(unsigned char key, int x, int y) { //Look(); } void Display::Look() { } void Display::Quit() { glDeleteTextures(_textureCount, _textureHandles); }