Blame simple/world-gen/gl3d.inc.c

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