Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.72 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <math.h>
  3.  
  4. // Deklaracje funkcji, ktore beda uzyte do obslugi roznych zdarzen.
  5. void OnRender(); //zmienia okna
  6. void OnReshape(int, int);
  7.  
  8. // Punkt wejscia do programu.
  9. int main(int argc, char * argv[])
  10. {
  11. // Inicjalizacja biblioteki GLUT. Nalezy przekazac parametry
  12. // wywolania programu.
  13. glutInit(&argc, argv);
  14.  
  15. // Ustawienie parametrow okna i kontekstu OpenGL.
  16. glutInitWindowPosition(100, 100);
  17. glutInitWindowSize(640, 360); //rozdzielczosc ekranu na starcie
  18. glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); // bufor klatki w formacie RGBA, double-buffered, z buforem glebokosci
  19.  
  20. // Utworzenie wlasciwego okna i nadanie mu tytulu.
  21. glutCreateWindow("GKiW: Lab 1");
  22.  
  23. // Ustawienie funkcji Render() jako tej, ktora jest wykonywana
  24. // kazdorazowo gdy potrzeba przerysowac zawartosc okna.
  25. glutDisplayFunc(OnRender); // funckja odpowiedzialna za wyswietlanie
  26. glutReshapeFunc(OnReshape);
  27.  
  28. // Wlaczenie testu glebokosci.
  29. glEnable(GL_DEPTH_TEST);
  30.  
  31. // Rozpoczecie wykonywania petli glownej. Od tego momentu
  32. // wplyw na przebieg dzialania programu maja wylacznie zarejestrowane
  33. // uprzednio callbacki.
  34. glutMainLoop();
  35.  
  36. return 0;
  37. }
  38.  
  39. // Licznik klatek - uzyteczny przy prostym ruchu kamery.
  40. int frame = 0;
  41.  
  42. // Callback przerysowujacy klatke.
  43. void OnRender() {
  44.  
  45. // Wyczysc zawartosc bufora koloru i glebokosci.
  46. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  47.  
  48. // Wybor macierzy, ktora od tej pory bedziemy modyfikowac
  49. // - macierz Modelu/Widoku.
  50. glMatrixMode(GL_MODELVIEW);
  51.  
  52. // Zaladowanie macierzy jednostkowej.
  53. glLoadIdentity(); //zerowany i przesyiwany o 90, a jakby nie byo to by w kazdej klatce bylby wiekszy kat 90+....
  54.  
  55. // Przesuniecie swiata (przeciwienstwo przesuniecia kamery).
  56. glTranslatef(0.0f, 0.0f, -10.0f); // -6 to przesuwany wektor na punt 0.0.0
  57.  
  58. // Obrot kamery - aby zatrzymac ja w miejscu, nalezy zakomentowac.
  59. glRotatef(frame, 0.0f, 1.0f, 0.0f);
  60.  
  61.  
  62. // Rysowanie obiektow na scenie.
  63. /*glColor3f(200.0f, 190.0f, 230.0f);
  64. glPushMatrix();
  65. glTranslatef(0.0f, 0.5f, 0.0f);
  66. glScalef(4.0f, 3.5f, 3.0f);
  67. glutSolidSphere(5.0f,20,30);
  68. glPopMatrix();*/
  69. // Prostopadloscian
  70. /*glColor3f(1.0f, 0.0f, 0.0f);
  71. glPushMatrix();
  72. glTranslatef(0.0f, 0.5f, 0.0f);
  73. glScalef(4.0f, 0.5f, 0.5f);
  74. glutSolidCube(1.0f);
  75. glPopMatrix();
  76. */
  77. // Tuluf
  78. glColor3f(0.0f,255.0f, 196.0f);
  79. glPushMatrix();
  80. glTranslatef(0.0f,-0.5f, 0.0f);
  81. glScalef(1.0f, 1.7f, 0.8f);
  82. glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
  83. glPopMatrix();
  84. //Głowa
  85. glColor3f(255.0f, 0.0f, 127.0f);
  86. glPushMatrix();
  87. glTranslatef(0.0f, 1.9f, 0.0f);
  88. glScalef(0.7f, 0.7f, 0.7f);
  89. glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
  90. glPopMatrix();
  91.  
  92. //Rynca prowa
  93. glColor3f(255.0f, 60.0f, 0.0f);
  94. glPushMatrix();
  95. glTranslatef(1.3f, -0.5f, 0.0f);
  96. glRotatef(-30.0f, 0.0f, 0.0f, -0.7f);
  97. glScalef(0.5f, 4.0f, 0.5f);
  98. glutSolidCube(0.5f);
  99. glPopMatrix();
  100. //rynca prowa2
  101. glColor3f(255.0f, 0.0f, 127.0f);
  102. glPushMatrix();
  103. glTranslatef(2.0f, -1.7f, 0.0f);
  104. glScalef(0.3f, 0.3f, 0.3f);
  105. glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
  106. glPopMatrix();
  107.  
  108. //rynca lewa
  109. glColor3f(255.0f, 60.0f, 0.0f);
  110. glPushMatrix();
  111. glTranslatef(-1.3f, -0.5f, 0.0f);
  112. glRotatef(-30.0f, 0.0f, 0.0f, 0.7f);
  113. glScalef(0.5f, 4.0f, 0.5f);
  114. glutSolidCube(0.5f);
  115. glPopMatrix();
  116. //rynca lewo2
  117. glColor3f(255.0f, 0.0f, 127.0f);
  118. glPushMatrix();
  119. glTranslatef(-2.0f, -1.7f, 0.0f);
  120. glScalef(0.3f, 0.3f, 0.3f);
  121. glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
  122. glPopMatrix();
  123. //noga lewa
  124. glColor3f(255.0f, 60.0f, 0.0f);
  125. glPushMatrix();
  126. glTranslatef(-1.0f, -3.0f, 0.0f);
  127. glRotatef(-30.0f, 0.0f, 0.0f, 0.7f);
  128. glScalef(0.5f, 5.0f, 0.5f);
  129. glutSolidCube(0.5f);
  130. glPopMatrix();
  131. //noga lewa kul
  132. glColor3f(255.0f, 0.0f, 127.0f);
  133. glPushMatrix();
  134. glTranslatef(1.8f, -4.5f, 0.0f);
  135. glScalef(0.3f, 0.3f, 0.3f);
  136. glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
  137. glPopMatrix();
  138. //noga prawa
  139. glColor3f(255.0f, 60.0f, 0.0f);
  140. glPushMatrix();
  141. glTranslatef(1.0f, -3.0f, 0.0f);
  142. glRotatef(-30.0f, 0.0f, 0.0f, -0.7f);
  143. glScalef(0.5f, 5.0f, 0.5f);
  144. glutSolidCube(0.5f);
  145. glPopMatrix();
  146. //noga lewa kula2
  147. glColor3f(255.0f, 0.0f, 127.0f);
  148. glPushMatrix();
  149. glTranslatef(-1.8f, -4.5f, 0.0f);
  150. glScalef(0.3f, 0.3f, 0.3f);
  151. glutSolidSphere(1.0f, 40, 40); //nadajemy ksztal etc
  152. glPopMatrix();
  153. // Stozek
  154. glColor3f(0.0f, 0.0f, 1.0f);
  155. glPushMatrix();
  156. glTranslatef(0.0, 2.5f, 0.0f);
  157. glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
  158. glutSolidCone(.5f, 1.0f, 14, 14);// promien, podstawa etc
  159. glPopMatrix();
  160.  
  161.  
  162. // Jesli instrukcje w danej implementacji OpenGL byly buforowane,
  163. // w tym momencie bufor zostanie oprozniony a instrukcje wykonane.
  164. glFlush(); //zbieranie do jednego bufora i wykonanie polecen nad kodem
  165.  
  166. // Zamien front-buffer z back-bufferem (double buffering).
  167. glutSwapBuffers();
  168.  
  169. // Nakaz wyswietlic kolejna klatke.
  170. glutPostRedisplay();
  171.  
  172. // Inkrementacja licznika klatek.
  173. frame++;
  174.  
  175. }
  176.  
  177. // Callback obslugujacy zmiane rozmiaru okna.
  178. void OnReshape(int width, int height) {
  179. // Wybor macierzy - macierz Projekcji.
  180. glMatrixMode(GL_PROJECTION);//macierz jednostkowa aby wszystko bylo w jednym miejscu
  181.  
  182. // Zaladowanie macierzy jednostkowej.
  183. glLoadIdentity();
  184.  
  185. // Okreslenie obszaru renderowania - caly obszar okna.
  186. 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
  187.  
  188. // Chcemy uzyc kamery perspektywicznej o kacie widzenia 60 stopni
  189. // i zasiegu renderowania 0.01-100.0 jednostek.
  190. gluPerspective(60.0f, (float) width / height, .01f, 100.0f);
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement