Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include "biblioteka.h"
- #ifdef __APPLE__
- #include <GLUT/glut.h>
- #else
- #include <GL/glut.h>
- #endif
- #include <stdlib.h>
- #define LICZBA_OB_TEXTUR 6
- GLuint obiektyTextur [LICZBA_OB_TEXTUR];
- char *plikiTextur[LICZBA_OB_TEXTUR] = {"C:/Users/Patryk/Documents/Programy GLUT/Literka/woda.tga",
- "C:/Users/Patryk/Documents/Programy GLUT/Literka/szklo.tga",
- "C:/Users/Patryk/Documents/Programy GLUT/Literka/szklo.tga",
- "C:/Users/Patryk/Documents/Programy GLUT/Literka/woda.tga",
- "C:/Users/Patryk/Documents/Programy GLUT/Literka/woda.tga",
- "C:/Users/Patryk/Documents/Programy GLUT/Literka/woda.tga"};
- static int slices = 16;
- static int stacks = 16;
- GLfloat cut_2=30;
- GLfloat exp_2=100;
- const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 0.0f };
- const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
- const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
- GLfloat light_position[] = { 0.0f, 0.0f, -2.5f, -5.0f };
- GLfloat kierunek[]={0.0f, 0.0f, -1.0f};
- const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
- const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 1.0f, 1.0f };
- const GLfloat mat_specular[] = { 1.0f, 1.0f, 0.0f, 0.0f };
- const GLfloat high_shininess[] = { 10.0f };
- int rzut, skala;
- int fovy = 90;
- int xx, yy, xz, yz, zx, obrot_x, obrot_y, yx, xy, zy;
- enum {ORTO, ASPECT_1_1, PERSP, FULL_WINDOW, EXIT, FRUST};
- float k=0;
- GLPVector3 vPoints[3] = {{0.0f, -1.0f, 0.0f},
- {1.0f, -1.0f, 0.0f},
- {0, -1.0f, -1.0f}};
- GLPMatrix Macierz_cieni;
- GLPVector4 vLightPos= { 2.0f, 5.0f, 5.0f, 0.0f };
- float xpos = 0, ypos = 3.4, zpos = -2.4, xrot = 0, yrot = 0, angle=0.0;
- GLfloat density = 0.01;
- GLfloat fogColor[4] = {0.5, 0.5, 0.5, 1.0}; //set the for
- //color to grey
- ///cien
- static void display(void);
- bool pokaz=false;
- void Widok (void) {
- glRotatef(xrot,1.0,0.0,0.0); //prawo/lewo
- glRotatef(yrot,0.0,1.0,0.0); //gora/dol
- glTranslated(-xpos,-ypos,-zpos);
- }
- void Podloga ()
- {
- glPushMatrix();
- glTranslated(0,0.3,-7);
- // glRotated(10,1,0,0);
- double dx=0.5;
- double dy=0.5;
- glBegin(GL_QUADS);
- for(double x=-10;x<10;x+=dx)
- for(double y=-20;y<20;y+=dy)
- {
- if(static_cast<int> ((x+y)/dx)%2==0)
- glColor4f(0,0,0,0.5);
- else
- glColor4f(1,1,0,0.0);
- glVertex3f(x,0,y);
- glVertex3f(x,0,y+dy);
- glVertex3f(x+dx,0,y+dy);
- glVertex3f(x+dx,0,y);
- }
- glEnd();
- glPopMatrix();
- }
- void Literka() //Podstawa
- {
- glPushMatrix();
- glTranslated(-2,0.3,-7);
- glColor3d(0, 0, 0);
- glPushMatrix();
- glTranslated(0,0.3,-7);
- glColor3d(0, 0, 0);
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glPopMatrix();
- glPushMatrix();
- glTranslated(0,2.3,-7);
- glColor3d(0, 0, 0);
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glPopMatrix();
- glPushMatrix();
- glTranslated(0,4.3,-7);
- glColor3d(0, 0, 0);
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[0]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[1]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[3]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 0.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 0.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 0.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_QUADS); // obiekt podstawowy kwadrat
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0.0f, 2.0f, 0.0f); // zdefiniowanie pierwszego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0.0f, 2.0f, 2.0f); // zdefiniowanie drugiego wierzcho3ka kwadratu
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 2.0f); // zdefiniowanie trzeciego wierzcho3ka kwadratu
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.0f, 2.0f, 0.0f); // zdefiniowanie czwartego wierzcho3ka kwadratu
- glEnd();
- glPopMatrix();
- //*************************************************************************************************************************************
- //*************************************************************************************************************************************
- //*************************************************************************************************************************************
- //Gorna czesc litery(brzuszek)
- glPushMatrix();
- glTranslatef(2,4,2);
- glRotatef(0,0,1,0);
- glColor3d(0, 0, 0);
- glTranslated(-2,7.2,-8);
- glRotated(90,1,0,0);
- glPushMatrix();
- glColor3d(0, 0, 0);
- {glRotated(0,0,0,1);}
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(0,1,5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0,1,0);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0,0,0);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0,0,5);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(0,0,5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,5);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,1,5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0,1,5);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,1,5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,5);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(4,0,4);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(4,1,4);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(4,1,4);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(4,0,4);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(4,0,1);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(4,1,1);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[4]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(4,1,1);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(4,0,1);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,0,0);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(3,1,0);
- glEnd();
- glPopMatrix();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,1,0);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,0);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0,0,0);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0,1,0);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(0,0,0);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(1,0,0);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(1,0,5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(0,0,5);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(1,0,0);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,0);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.5,0,1);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(1,0,1);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[2]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,0,0);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(4,0,1);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,0,1.5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.5,0,1);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[3]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(4,0,1);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(4,0,4);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,0,3.5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(3,0,1.5);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[1]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,0,3.5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(4,0,4);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,0,5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.5,0,4);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[3]);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,0,5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(1,0,5);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(1,0,4);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.5,0,4);
- glEnd();
- glBindTexture (GL_TEXTURE_2D, obiektyTextur[4]);
- glTranslated(0,1,0);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(1,0,0);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(0,0,0);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(0,0,5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(1,0,5);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,0,0);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(1,0,0);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(1,0,1);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.5,0,1);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(4,0,1);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,0);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.5,0,1);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(3,0,1.5);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(4,0,4);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(4,0,1);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,0,1.5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(3,0,3.5);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(4,0,4);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,3.5);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.5,0,4);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(3,0,5);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(1,0,5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,5);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.5,0,4);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(1,0,4);
- glEnd();
- glTranslated(0,-1,0);
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(1,1,1);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(1,0,1);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.5,0,1);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.5,1,1);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.5,1,1);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.5,0,1);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,0,1.5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(3,1,1.5);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,1,1.5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,1.5);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(3,0,3.5);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(3,1,3.5);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(3,1,3.5);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(3,0,3.5);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(2.5,0,4);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(2.5,1,4);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(2.5,1,4);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(2.5,0,4);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(1,0,4);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(1,1,4);
- glEnd();
- glBegin(GL_POLYGON);
- glTexCoord2f(1.0f,1.0f);
- glVertex3f(1,1,4);
- glTexCoord2f(0.0f,1.0f);
- glVertex3f(1,0,4);
- glTexCoord2f(0.0f,0.0f);
- glVertex3f(1,0,1);
- glTexCoord2f(1.0f,0.0f);
- glVertex3f(1,1,1);
- glEnd();
- glPopMatrix();
- glPopMatrix(); //BIG BOY
- }
- void Mgla (void)
- {
- glEnable (GL_DEPTH_TEST); //enable the depth testing
- glEnable (GL_FOG); //enable the fog
- glFogi (GL_FOG_MODE, GL_EXP2); //set the fog mode to GL_EXP2
- glFogfv (GL_FOG_COLOR, fogColor); //set the fog color to
- //our color chosen above
- glFogf (GL_FOG_DENSITY, density); //set the density to the
- //value above
- glHint (GL_FOG_HINT, GL_NICEST); // set the fog to look the
- //nicest, may slow down on older cards
- }
- void Reshape(int width, int height)
- {
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- GLdouble aspect = 1;
- GLfloat zakres = 3.0f;
- GLfloat blisko = 1.0f;
- GLfloat daleko = 5.0f;
- if (rzut == ORTO) {
- if (skala == ASPECT_1_1) {
- if (width < height && width > 0)
- glOrtho(-zakres, zakres, -zakres * height / width, zakres * height / width, -zakres * 5, zakres * 5);
- else
- if (width >= height && height > 0)
- glOrtho(-zakres * width / height, zakres * width / height, -zakres, zakres, -zakres * 5, zakres * 5);
- } else
- glOrtho(-zakres, zakres, -zakres, zakres, -zakres * 5, zakres * 5);
- }
- if (rzut == FRUST) {
- if (skala == ASPECT_1_1) {
- if (width < height && width > 0)
- glFrustum(-zakres, zakres, -zakres * height / width, zakres * height / width, blisko, daleko * 5);
- else
- if (width >= height && height > 0)
- glFrustum(-zakres * width / height, zakres * width / height, -zakres, zakres, blisko, daleko * 5);
- } else
- glFrustum(-zakres, zakres, -zakres, zakres, blisko, daleko);
- }
- if (rzut == PERSP) {
- if (height > 0)
- aspect = width / (GLdouble) height;
- gluPerspective(fovy, aspect, blisko, daleko);
- }
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- display();
- }
- void key(unsigned char key, int x, int y)
- {
- switch (key) {
- case 'g':
- pokaz=true;
- break;
- case 'G':
- pokaz=false;
- break;
- case 'd':
- kierunek[0] += 0.01;
- glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, kierunek);
- glutPostRedisplay();
- break;
- case 'a':
- kierunek[0] -= 0.01;
- glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, kierunek);
- glutPostRedisplay();
- break;
- case 'w':
- kierunek[1] += 0.01;
- glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, kierunek);
- glutPostRedisplay();
- break;
- case 's':
- kierunek[1] -= 0.01;
- glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, kierunek);
- glutPostRedisplay();
- break;
- case 'e':
- exp_2++;
- glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, exp_2);
- glutPostRedisplay();
- break;
- case 'r':
- exp_2--;
- glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, exp_2);
- glutPostRedisplay();
- break;
- case 't':
- cut_2++;
- glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, cut_2);
- glutPostRedisplay();
- break;
- case 'y':
- cut_2--;
- glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, cut_2);
- glutPostRedisplay();
- break;
- case 'x':
- glEnable(GL_LIGHT0);
- break;
- case 'X':
- glDisable(GL_LIGHT0);
- glutPostRedisplay();
- break;
- case 'p':
- zpos += 0.1;
- break;
- case ';':
- zpos -= 0.1;
- break;
- case 'l':
- xpos += 0.1 ;
- break;
- case 'j':
- xpos -= 0.1 ;
- break;
- case 'i':
- ypos += 0.1;
- break;
- case 'k':
- ypos -= 0.1;
- break;
- case 'u':
- yrot += 1;
- if (yrot >360) yrot -= 360;
- break;
- case 'o':
- yrot -= 1;
- if (yrot < -360)yrot += 360;
- break;
- case '[':
- xrot += 1;
- if (xrot >360) yrot -= 360;
- break;
- case ']':
- xrot -= 1;
- if (xrot < -360)yrot += 360;
- break;
- case 'm':
- density += 0.11;
- glFogf (GL_FOG_DENSITY, density);
- break;
- case 'M':
- density -= 0.11;
- glFogf (GL_FOG_DENSITY, density);
- break;
- case '1':
- {
- xx = 0;
- yx = 1;
- zx = 0;
- obrot_x = obrot_x + 5;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- }
- case '2':
- {
- xx = 0;
- yx = 1;
- zx = 0;
- obrot_x = obrot_x - 5;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- }
- case '3':
- {
- xy = 1;
- yy = 0;
- zy = 0;
- obrot_y = obrot_y + 5;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- }
- case '4':
- {
- xy = 1;
- yy = 0;
- zy = 0;
- obrot_y = obrot_y - 5;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- }
- }
- }
- void Menu(int value)
- {
- switch (value) {
- // wyjście
- case EXIT:
- exit(0);
- case FULL_WINDOW:
- skala = FULL_WINDOW;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- case ASPECT_1_1:
- skala = ASPECT_1_1;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- case ORTO:
- rzut = ORTO;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- case FRUST:
- rzut = FRUST;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- case PERSP:
- rzut = PERSP;
- Reshape(glutGet(GLUT_WINDOW_WIDTH), glutGet(GLUT_WINDOW_HEIGHT));
- break;
- }
- }
- static void resize(int width, int height)
- {
- const float ar = (float) width / (float) height;
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity() ;
- }
- static void display(void) {
- const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- const double a = t * 90.0;
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();
- Widok();
- Podloga();
- glPushMatrix();
- glPushMatrix();
- glRotatef(obrot_x, 0.0f, 0.0f, 0.0f);
- glRotatef(obrot_y, xy, yy, zy);
- Literka();
- glPopMatrix();
- glPushMatrix();
- glDisable (GL_LIGHTING);
- glRotatef(obrot_x, 0.0f, 1.0f, 0.0f);
- glColor3d(0, 0, 0);
- glTranslated(0,1.4,2);
- glMultMatrixf (Macierz_cieni);
- Literka();
- glEnable(GL_LIGHTING);
- glPopMatrix();
- glPopMatrix();
- glPopMatrix();
- glutSwapBuffers();
- }
- static void idle(void)
- {
- glutPostRedisplay();
- }
- int main(int argc, char *argv[])
- {
- glutInit(&argc, argv);
- glutInitWindowSize(1600,900);
- glutInitWindowPosition(10,10);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow("Patryk Stramski Literka");
- Mgla();
- glClearColor(1,1,1,1);
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LESS);
- glEnable(GL_LIGHT0);
- glEnable(GL_NORMALIZE);
- glEnable(GL_COLOR_MATERIAL);
- glEnable(GL_LIGHTING);
- glutCreateMenu (Menu); // utworzenie menu podręcznego
- // dodadnie pozycji do menu podręcznego
- glutAddMenuEntry ("Rodzaj skalowania - cale okno", FULL_WINDOW);
- glutAddMenuEntry ("Rodzaj skalowania - skala 1:1",ASPECT_1_1);
- glutAddMenuEntry ("Rzutowanie ortogonalne", ORTO);
- glutAddMenuEntry ("Rzutowanie frustum", FRUST);
- glutAddMenuEntry ("Rzutowanie perspective", PERSP);
- glutAddMenuEntry ("Wyjscie",EXIT);
- glutAttachMenu (GLUT_RIGHT_BUTTON);
- glutKeyboardFunc(key);
- glutIdleFunc(idle);
- glutReshapeFunc(Reshape);
- glutDisplayFunc(display);
- glpMakeShadowMatrix (vPoints, vLightPos, Macierz_cieni);
- glClearColor(1,1,1,1);
- glEnable(GL_TEXTURE_2D); // włączenie teksturowania
- glGenTextures(LICZBA_OB_TEXTUR, obiektyTextur); /// wygenerowanie obiektów tekstur
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); // ustalenie trybu środowiska
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- for (int i = 0; i < LICZBA_OB_TEXTUR; i++)
- {
- GLubyte *pBytes;
- GLint iWidth, iHeight, iComponents;
- GLenum eFormat;
- glBindTexture(GL_TEXTURE_2D, obiektyTextur[i]); // dowiązanie obiektów tekstur
- pBytes = glploadtga(plikiTextur[i], &iWidth, &iHeight, &iComponents, &eFormat); // Załadowanie tekstur
- // utworzenie mipmap
- gluBuild2DMipmaps(GL_TEXTURE_2D, iComponents, iWidth, iHeight, eFormat, GL_UNSIGNED_BYTE, pBytes);
- free(pBytes); // zwolnienie pamięci
- }
- glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
- glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
- glLightfv(GL_LIGHT0, GL_POSITION, light_position);
- glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,cut_2);
- glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,exp_2);
- glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,kierunek);
- glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
- glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
- glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
- glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
- glutMainLoop();
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement