Advertisement
Guest User

Untitled

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