|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
double cameraPos[3] = {0, 0, -100};
|
|
Ivan Mahonin |
878d83 |
double cameraRot[3] = {30, -30, 0};
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
void begin3d() {
|
|
Ivan Mahonin |
878d83 |
glEnable(GL_DEPTH_TEST);
|
|
Ivan Mahonin |
878d83 |
glEnable(GL_CULL_FACE);
|
|
Ivan Mahonin |
878d83 |
glEnable(GL_LIGHTING);
|
|
Ivan Mahonin |
878d83 |
glEnable(GL_LIGHT0);
|
|
Ivan Mahonin |
878d83 |
glEnable(GL_COLOR_MATERIAL);
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glMatrixMode(GL_PROJECTION);
|
|
Ivan Mahonin |
878d83 |
glPushMatrix();
|
|
Ivan Mahonin |
878d83 |
glLoadIdentity();
|
|
Ivan Mahonin |
878d83 |
gluPerspective(60.0, (double)windowGetWidth()/(double)windowGetHeight(), 0.1, 10000.0);
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
const double mm[16] = {
|
|
Ivan Mahonin |
878d83 |
0, 0, 1, 0,
|
|
Ivan Mahonin |
878d83 |
1, 0, 0, 0,
|
|
Ivan Mahonin |
878d83 |
0, 1, 0, 0,
|
|
Ivan Mahonin |
878d83 |
0, 0, 0, 1 };
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glMatrixMode(GL_MODELVIEW);
|
|
Ivan Mahonin |
878d83 |
glPushMatrix();
|
|
Ivan Mahonin |
878d83 |
glLoadIdentity();
|
|
Ivan Mahonin |
878d83 |
glTranslated(cameraPos[0], cameraPos[1], cameraPos[2]);
|
|
Ivan Mahonin |
878d83 |
glRotated(cameraRot[0], 1, 0, 0);
|
|
Ivan Mahonin |
878d83 |
glRotated(cameraRot[1], 0, 1, 0);
|
|
Ivan Mahonin |
878d83 |
glRotated(cameraRot[2], 0, 0, 1);
|
|
Ivan Mahonin |
878d83 |
glMultMatrixd(mm);
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
float dir[4] = { 1, 1, 1, 0 };
|
|
Ivan Mahonin |
878d83 |
float k = 1.f/sqrtf(dir[0]*dir[0] + dir[1]*dir[1] + dir[2]*dir[2]);
|
|
Ivan Mahonin |
878d83 |
dir[0] *= k; dir[1] *= k; dir[2] *= k;
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glLightfv(GL_LIGHT0, GL_POSITION, dir);
|
|
Ivan Mahonin |
878d83 |
}
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
void end3d() {
|
|
Ivan Mahonin |
878d83 |
glPopMatrix();
|
|
Ivan Mahonin |
878d83 |
glMatrixMode(GL_PROJECTION);
|
|
Ivan Mahonin |
878d83 |
glPopMatrix();
|
|
Ivan Mahonin |
878d83 |
glMatrixMode(GL_MODELVIEW);
|
|
Ivan Mahonin |
878d83 |
glDisable(GL_DEPTH_TEST);
|
|
Ivan Mahonin |
878d83 |
}
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
void cubeDraw(double s) {
|
|
Ivan Mahonin |
878d83 |
s *= 0.5;
|
|
Ivan Mahonin |
878d83 |
glBegin(GL_QUADS);
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glColor3d(1, 0, 0);
|
|
Ivan Mahonin |
878d83 |
glNormal3d(0, 0, -1);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, -s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, -s, -s);
|
|
Ivan Mahonin |
878d83 |
glNormal3d(0, 0, 1);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, -s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, -s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, s, s);
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glColor3d(0, 1, 0);
|
|
Ivan Mahonin |
878d83 |
glNormal3d(0, -1, 0);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, -s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, -s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, -s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, -s, s);
|
|
Ivan Mahonin |
878d83 |
glNormal3d(0, 1, 0);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, s, -s);
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glColor3d(0, 0, 1);
|
|
Ivan Mahonin |
878d83 |
glNormal3d(-1, 0, 0);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, -s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, -s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d(-s, s, -s);
|
|
Ivan Mahonin |
878d83 |
glNormal3d(1, 0, 0);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, -s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, s, -s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, s, s);
|
|
Ivan Mahonin |
878d83 |
glVertex3d( s, -s, s);
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glEnd();
|
|
Ivan Mahonin |
878d83 |
|
|
Ivan Mahonin |
878d83 |
glColor3d(1, 1, 1);
|
|
Ivan Mahonin |
878d83 |
}
|
|
Ivan Mahonin |
878d83 |
|