#include <stdio.h>
#include <stdlib.h>
#include <glut.h>
#include <GL/GL.h>
#define ESC_KEY 27
#define UP_KEY 38
#define LEFT_KEY 37
#define RIGHT_KEY 39
#define DOWN_KEY 40
#define A_KEY 97
GLfloat rotate = 0.0f;
GLfloat angley = 0.0f;
GLfloat anglex = 0.0f;
void display ( void )
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRotatef(rotate,0.0,0.0,1.0f);
glBegin(GL_TRIANGLES);
glColor4f(1.0,0.0,0.0,1.0);
glVertex3f(0.0f, 2.0f, -6.0f);
glVertex3f(-1.0f, 0.0f, -6.0f);
glVertex3f( 1.0f, 0.0f, -6.0f);
glEnd();
glBegin(GL_QUADS);
glColor4f(1.0,1.0,0.0,1.0);
glVertex3f(-.5f, 0.0f,-6.0f);
glVertex3f( .5f, 0.0f, -6.0f);
glVertex3f( .5f,-2.0f, -6.0f);
glVertex3f(-.5f,-2.0f, -6.0f);
glEnd();
glRotatef(45.0f,0.0f,0.0f,1.0f);
oglSquare(mathPoint<GLfloat>(-1.0,0.0,-4.0),mathVector<GLfloat>(1.0f,0.0,0.0f), 3.0f,2.0f);
oglSquare(mathPoint<GLfloat>(1.0,0.0,-4.0),mathVector<GLfloat>(1.0f,0.0,0.0f), 3.0f,2.0f);
oglSquare(mathPoint<GLfloat>(0.0,1.0,-4.0),mathVector<GLfloat>(0.0f,1.0f,0.0f), 3.0f,2.0f);
glPopMatrix();
glutSwapBuffers();
}
void reshape(int width, int height)
{
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (height==0)
gluPerspective ( 75, float(width), 1, 500.0 );
else
gluPerspective ( 75, float(width)/height, 1, 500.0 );
glMatrixMode(GL_MODELVIEW);
}
void keyboard ( unsigned char key, int x, int y )
{
switch ( key )
{
case ESC_KEY:
printf("Hej");
exit(0);
break;
case A_KEY:
rotate = -270.0f;
printf("rotate %f\n",rotate);
break;
default:
break;
}
glutPostRedisplay();
}
void processSpecialKeys(int key, int x, int y) {
switch( key ) {
case GLUT_KEY_LEFT:
rotate = -270.0f;
angley -= 10.0f;
printf("rotate %f\n",rotate);
break;
case GLUT_KEY_RIGHT:
angley += 10.0f;
rotate = -90.0f;
printf("rotate %f\n",rotate);
break;
case GLUT_KEY_UP:
rotate = 0.0f;
anglex -= 10.0f;
printf("rotate %f\n",rotate);
break;
case GLUT_KEY_DOWN:
rotate = 180.0f;
anglex += 10.0f;
printf("rotate %f\n",rotate);
break;
default:
printf("unknown key\n");
break;
}
glutPostRedisplay();
}
void main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
glutInitWindowSize(500, 500 );
glutCreateWindow("My GLUT application");
glutDisplayFunc(display);
glutIdleFunc(display);
glutKeyboardFunc(keyboard);
glutReshapeFunc(reshape);
glutSpecialFunc(processSpecialKeys);
glutMainLoop();
}