Heya guys!
I am fairly new to OpenGL-programming, using GLUT. My first program looks like this:
#include <windows.h>
#include <gl\glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PI 3.1415265359
#pragma argsused
static GLfloat spin = 0.0;
GLfloat red = 1.0, dred = -0.005,
green = 1.0, dgreen = -0.01,
blue = 1.0, dblue = -0.015,
g = 8, i = 0, dg = 5;
GLenum errCode;
const GLubyte *errString;
const GLubyte *glVersion, *glVendor, *glRenderer;
const dspin = 1.0;
void glerror (int msg)
{
if ((errCode =glGetError()) != GL_NO_ERROR)
{
errString = gluErrorString(errCode);
fprintf(stderr, "
OGL-Error: %s %i", errString, msg);
}
}
void init (void)
{
glEnable(GL_DEPTH_TEST);
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
glutSetCursor (GLUT_CURSOR_NONE);
glutFullScreen ();
}
void display (void)
{
i = i + 0.05;
if (i > 360) i = 0;
red = red + dred;
if ((red < 0.0) | | (red > 1.0)) dred = -dred;
green = green + dgreen;
if ((green < 0.0) | | (green > 1.0)) dgreen = -dgreen;
blue = blue + dblue;
if ((blue < 0.0) | | (blue > 1.0)) dblue = -dblue;
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f (red, green, blue);
glPushMatrix ();
glLoadIdentity();
glRotatef (spin, 1.0f, 1.0f, 0.1f);
// printf("
Spin: %f", spin);
// dg = sin (i);
// g = 10 + dg;
glerror(0);
glBegin(GL_QUADS);
glColor3f (red, green, blue);
glVertex3f (g, g, g);
glVertex3f (g, -g, g);
glVertex3f (-g, -g, g);
glVertex3f (-g, g, g);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (g, g, -g);
glVertex3f (g, -g, -g);
glVertex3f (-g, -g, -g);
glVertex3f (-g, g, -g);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (g, g, g);
glVertex3f (g, g, -g);
glVertex3f (-g, g, -g);
glVertex3f (-g, g, g);
glColor3f (1.0, 0.0, 0.0);
glVertex3f (g, -g, g);
glVertex3f (g, -g, -g);
glVertex3f (-g, -g, -g);
glVertex3f (-g, -g, g);
glColor3f (1.0, 0.0, 1.0);
glVertex3f (g, g, g);
glVertex3f (g, g, -g);
glVertex3f (g, -g, -g);
glVertex3f (g, -g, g);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (-g, g, g);
glVertex3f (-g, g, -g);
glVertex3f (-g, -g, -g);
glVertex3f (-g, -g, g);
glEnd;
// glutWireCube (0.1*g);
glerror(1);
glPopMatrix();
glutSwapBuffers();
glFlush();
glerror(2);
}
void SpinDisplay (void)
{
spin = spin + dspin;
if (spin > 360) spin = spin - 360;
glutPostRedisplay();
}
void reshape (int width, int height)
{
glViewport (0, 0, (GLsizei) width, (GLsizei) height);
glMatrixMode (GL_PROJECTION);
glLoadIdentity;
glOrtho (-20.0, 20.0, -15.0, 15.0, -15.0, 15.0); //AspectRatio beachten!!!
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
void mouse (int button, int state, int x, int y)
{
switch (button)
{
case GLUT_LEFT_BUTTON :
if (state == GLUT_DOWN) glutIdleFunc (SpinDisplay);
break;
case GLUT_RIGHT_BUTTON :
if (state == GLUT_DOWN) glutIdleFunc (NULL);
break;
default :
break;
}
}
void keyboard ( unsigned char key, int x, int y )
{
switch ( key ) {
case 27: /* Escape key */
printf ("
Shutting down…");
glutDestroyWindow(1);
exit ( 0 );
break;
default:
break;
}
}
int main ( int argc, char** argv )
{
printf("
*** W