Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#include <windows.h>
- #include <stdlib.h>
- #include <GL/glut.h>
- #include <math.h>
- #define XMaxOkna 500
- #define YMaxOkna 500
- #define XPozycjaOkna 100
- #define YPozycjaOkna 100
- using namespace std;
- char tekst[] = "Laboratorium 11";
- #define ANIM_FPS 40
- #define M_PI_NA_180 M_PI/180
- GLenum glPolygonModeFace[3]= {GL_FRONT,GL_BACK,GL_FRONT_AND_BACK};
- GLenum glPolygonModeMode[3]= {GL_LINE, GL_POINT, GL_FILL};
- int glPolyFace =0;
- int glPolyMode =0;
- int glCullFaceFace =0;
- int i=0;
- float kat=0;
- float r=0.4;
- float traX = 0.5;
- float traY = 0;
- GLfloat rotA = 0;
- GLfloat rotX = 0;
- GLfloat rotY = 0;
- GLfloat scaX = 0.1;
- GLfloat scaY = 0.1;
- GLfloat scaZ = 0.1;
- void displaySzescian() {
- glBegin (GL_QUADS);
- glColor3f (0,1,0);
- glVertex3f (-1.0, -1.0, 1.0);
- glVertex3f (-1.0, 1.0, 1.0);
- glVertex3f (1.0, 1.0, 1.0);
- glVertex3f (1.0, -1.0, 1.0);
- glColor3f (1,1,0);
- glVertex3f (1.0, 1.0, -1.0);
- glVertex3f (-1.0, 1.0, -1.0);
- glVertex3f (-1.0, -1.0, -1.0);
- glVertex3f (1.0, -1.0, -1.0);
- glColor3f (0,0,1);
- glVertex3f (1.0, 1.0, -1.0);
- glVertex3f (1.0, 1.0, 1.0);
- glVertex3f (-1.0, 1.0, 1.0);
- glVertex3f (-1.0, 1.0, -1.0);
- glColor3f (1,0,0);
- glVertex3f (-1.0, -1.0, -1.0);
- glVertex3f (-1.0, -1.0, 1.0);
- glVertex3f (1.0, -1.0, 1.0);
- glVertex3f (1.0, -1.0, -1.0);
- glColor3f (0,1,1);
- glVertex3f (1.0, 1.0, -1.0);
- glVertex3f (1.0, -1.0, -1.0);
- glVertex3f (1.0, -1.0, 1.0);
- glVertex3f (1.0, 1.0, 1.0);
- glColor3f (1,1,1);
- glVertex3f (-1.0, -1.0, 1.0);
- glVertex3f (-1.0, -1.0, -1.0);
- glVertex3f (-1.0, 1.0, -1.0);
- glVertex3f (-1.0, 1.0, 1.0);
- glEnd ();
- }
- void rysuj(GLfloat a, GLfloat b) {
- glPushMatrix();
- glTranslatef (a,b,0);
- glRotatef (rotA,rotX,rotY,0);
- glScalef (scaX,scaY,scaZ);
- displaySzescian();
- glPopMatrix();
- }
- void display() {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity();
- glEnable(GL_DEPTH_TEST);
- glCullFace(glPolygonModeFace[glCullFaceFace]);
- glPolygonMode(glPolygonModeFace[glPolyFace],glPolygonModeMode[glPolyMode]);
- rysuj(traX,traY);
- glFlush();
- glutSwapBuffers();
- }
- void reshape(int w, int h) {
- glViewport(0, 0, (GLsizei) w, (GLsizei) h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- //gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h);
- glOrtho (-10, 10, -10, 10, 10, 10);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- };
- void keyboard (unsigned char key, int x, int y) {
- switch(key) {
- case 'q':
- if (scaX>0.2) scaX-=0.1;
- break;
- case 'w':
- if (scaX<0.3) scaX+=0.1;
- break;
- case 'e':
- if (scaY>0.2) scaY-=0.1;
- break;
- case 'r':
- if (scaY<0.3) scaY+=0.1;
- break;
- case 't':
- if (scaZ>0.2) scaZ-=0.1;
- break;
- case 'y':
- if (scaZ<0.3) scaZ+=0.1;
- break;
- case 'a':
- glPolyFace=0;
- break;
- case 's':
- glPolyFace=1;
- break;
- case 'd':
- glPolyFace=2;
- break;
- case 'f':
- glPolyMode=0;
- break;
- case 'g':
- glPolyMode=1;
- break;
- case 'h':
- glPolyMode=2;
- break;
- case 'z':
- glEnable(GL_CULL_FACE);
- break;
- case 'x':
- glDisable(GL_CULL_FACE);
- break;
- case 'c':
- glCullFaceFace=0;
- break;
- case 'v':
- glCullFaceFace=1;
- break;
- case 'b':
- glCullFaceFace=2;
- break;
- default:
- return;
- }
- display();
- };
- void idle() {
- rotA++;
- rotX++;
- rotY++;
- i+=1;
- kat = i * M_PI_NA_180;
- traX = r * cos(kat);
- traY = r * sin(kat);
- glutPostRedisplay();
- }
- void timer(int val) {
- rotA++;
- rotX++;
- rotY++;
- i+=1;
- kat = i * M_PI_NA_180;
- traX = r * cos(kat);
- traY = r * sin(kat);
- glutPostRedisplay();
- glutTimerFunc(1000/ANIM_FPS, timer, 0);
- };
- int main(int argc,char *argv[]) {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
- glutInitWindowSize(XMaxOkna, YMaxOkna);
- glutInitWindowPosition(XPozycjaOkna,YPozycjaOkna);
- glutCreateWindow(tekst);
- glutDisplayFunc(display);
- glutReshapeFunc(reshape);
- glutKeyboardFunc(keyboard);
- //glutIdleFunc(idle);
- glutTimerFunc(1000/ANIM_FPS, timer, 0);
- glutMainLoop();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement