Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <math.h>
- // Deklaracje funkcji, ktore beda uzyte do obslugi roznych zdarzen.
- void OnRender(); //zmienia okna
- void OnReshape(int, int);
- // Punkt wejscia do programu.
- int main(int argc, char * argv[])
- {
- // Inicjalizacja biblioteki GLUT. Nalezy przekazac parametry
- // wywolania programu.
- glutInit(&argc, argv);
- // Ustawienie parametrow okna i kontekstu OpenGL.
- glutInitWindowPosition(100, 100);
- glutInitWindowSize(640, 360); //rozdzielczosc ekranu na starcie
- glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); // bufor klatki w formacie RGBA, double-buffered, z buforem glebokosci
- // Utworzenie wlasciwego okna i nadanie mu tytulu.
- glutCreateWindow("GKiW: Lab 1");
- // Ustawienie funkcji Render() jako tej, ktora jest wykonywana
- // kazdorazowo gdy potrzeba przerysowac zawartosc okna.
- glutDisplayFunc(OnRender); // funckja odpowiedzialna za wyswietlanie
- glutReshapeFunc(OnReshape);
- // Wlaczenie testu glebokosci.
- glEnable(GL_DEPTH_TEST);
- // Rozpoczecie wykonywania petli glownej. Od tego momentu
- // wplyw na przebieg dzialania programu maja wylacznie zarejestrowane
- // uprzednio callbacki.
- glutMainLoop();
- return 0;
- }
- // Licznik klatek - uzyteczny przy prostym ruchu kamery.
- int frame = 0;
- // Callback przerysowujacy klatke.
- void OnRender() {
- // Wyczysc zawartosc bufora koloru i glebokosci.
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- // Wybor macierzy, ktora od tej pory bedziemy modyfikowac
- // - macierz Modelu/Widoku.
- glMatrixMode(GL_MODELVIEW);
- // Zaladowanie macierzy jednostkowej.
- glLoadIdentity(); //zerowany i przesyiwany o 90, a jakby nie byo to by w kazdej klatce bylby wiekszy kat 90+....
- // Przesuniecie swiata (przeciwienstwo przesuniecia kamery).
- glTranslatef(0.0f, 0.0f, -10.0f); // -6 to przesuwany wektor na punt 0.0.0
- // Obrot kamery - aby zatrzymac ja w miejscu, nalezy zakomentowac.
- glRotatef(frame, 0.0f, 1.0f, 0.0f);
- // Rysowanie obiektow na scenie.
- /*glColor3f(200.0f, 190.0f, 230.0f);
- glPushMatrix();
- glTranslatef(0.0f, 0.5f, 0.0f);
- glScalef(4.0f, 3.5f, 3.0f);
- glutSolidSphere(5.0f,20,30);
- glPopMatrix();*/
- // Prostopadloscian
- /*glColor3f(1.0f, 0.0f, 0.0f);
- glPushMatrix();
- glTranslatef(0.0f, 0.5f, 0.0f);
- glScalef(4.0f, 0.5f, 0.5f);
- glutSolidCube(1.0f);
- glPopMatrix();
- */
- // Tuluf
- glColor3f(0.0f,255.0f, 196.0f);
- glPushMatrix();
- glTranslatef(0.0f,-0.5f, 0.0f);
- glScalef(1.0f, 1.7f, 0.8f);
- glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
- glPopMatrix();
- //Głowa
- glColor3f(255.0f, 0.0f, 127.0f);
- glPushMatrix();
- glTranslatef(0.0f, 1.9f, 0.0f);
- glScalef(0.7f, 0.7f, 0.7f);
- glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
- glPopMatrix();
- //Rynca prowa
- glColor3f(255.0f, 60.0f, 0.0f);
- glPushMatrix();
- glTranslatef(1.3f, -0.5f, 0.0f);
- glRotatef(-30.0f, 0.0f, 0.0f, -0.7f);
- glScalef(0.5f, 4.0f, 0.5f);
- glutSolidCube(0.5f);
- glPopMatrix();
- //rynca prowa2
- glColor3f(255.0f, 0.0f, 127.0f);
- glPushMatrix();
- glTranslatef(2.0f, -1.7f, 0.0f);
- glScalef(0.3f, 0.3f, 0.3f);
- glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
- glPopMatrix();
- //rynca lewa
- glColor3f(255.0f, 60.0f, 0.0f);
- glPushMatrix();
- glTranslatef(-1.3f, -0.5f, 0.0f);
- glRotatef(-30.0f, 0.0f, 0.0f, 0.7f);
- glScalef(0.5f, 4.0f, 0.5f);
- glutSolidCube(0.5f);
- glPopMatrix();
- //rynca lewo2
- glColor3f(255.0f, 0.0f, 127.0f);
- glPushMatrix();
- glTranslatef(-2.0f, -1.7f, 0.0f);
- glScalef(0.3f, 0.3f, 0.3f);
- glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
- glPopMatrix();
- //noga lewa
- glColor3f(255.0f, 60.0f, 0.0f);
- glPushMatrix();
- glTranslatef(-1.0f, -3.0f, 0.0f);
- glRotatef(-30.0f, 0.0f, 0.0f, 0.7f);
- glScalef(0.5f, 5.0f, 0.5f);
- glutSolidCube(0.5f);
- glPopMatrix();
- //noga lewa kul
- glColor3f(255.0f, 0.0f, 127.0f);
- glPushMatrix();
- glTranslatef(1.8f, -4.5f, 0.0f);
- glScalef(0.3f, 0.3f, 0.3f);
- glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
- glPopMatrix();
- //noga prawa
- glColor3f(255.0f, 60.0f, 0.0f);
- glPushMatrix();
- glTranslatef(1.0f, -3.0f, 0.0f);
- glRotatef(-30.0f, 0.0f, 0.0f, -0.7f);
- glScalef(0.5f, 5.0f, 0.5f);
- glutSolidCube(0.5f);
- glPopMatrix();
- //noga lewa kula2
- glColor3f(255.0f, 0.0f, 127.0f);
- glPushMatrix();
- glTranslatef(-1.8f, -4.5f, 0.0f);
- glScalef(0.3f, 0.3f, 0.3f);
- glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
- glPopMatrix();
- // Stozek
- glColor3f(0.0f, 0.0f, 1.0f);
- glPushMatrix();
- glTranslatef(0.0, 2.5f, 0.0f);
- glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
- glutSolidCone(.5f, 1.0f, 14, 14);// promien, podstawa etc
- glPopMatrix();
- // Jesli instrukcje w danej implementacji OpenGL byly buforowane,
- // w tym momencie bufor zostanie oprozniony a instrukcje wykonane.
- glFlush(); //zbieranie do jednego bufora i wykonanie polecen nad kodem
- // Zamien front-buffer z back-bufferem (double buffering).
- glutSwapBuffers();
- // Nakaz wyswietlic kolejna klatke.
- glutPostRedisplay();
- // Inkrementacja licznika klatek.
- frame++;
- }
- // Callback obslugujacy zmiane rozmiaru okna.
- void OnReshape(int width, int height) {
- // Wybor macierzy - macierz Projekcji.
- glMatrixMode(GL_PROJECTION);//macierz jednostkowa aby wszystko bylo w jednym miejscu
- // Zaladowanie macierzy jednostkowej.
- glLoadIdentity();
- // Okreslenie obszaru renderowania - caly obszar okna.
- glViewport(0, 0, width, height); //ustalamy w ktorym miejscu ma byc renderowane rogi srodki etc /// jak nablizej moze aby byl renderowany i jak daleko aby tez byly rendoerwowane
- // Chcemy uzyc kamery perspektywicznej o kacie widzenia 60 stopni
- // i zasiegu renderowania 0.01-100.0 jednostek.
- gluPerspective(60.0f, (float) width / height, .01f, 100.0f);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement