Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <time.h>
  5. #include "GL\glew.h"
  6. #include "GL\freeglut.h"
  7. #include "tekstura.h"
  8. #include <fstream>
  9. #include "shaderLoader.h" //narzŕdzie do │adowania i kompilowania shaderˇw z pliku
  10.  
  11.  
  12. //funkcje algebry liniowej
  13. #include "glm/vec3.hpp" // glm::vec3
  14. #include "glm/vec4.hpp" // glm::vec4
  15. #include "glm/mat4x4.hpp" // glm::mat4
  16. #include "glm/gtc/matrix_transform.hpp" // glm::translate, glm::rotate, glm::scale, glm::perspective
  17.  
  18.  
  19. //Wymiary okna
  20. int screen_width = 640;
  21. int screen_height = 480;
  22.  
  23.  
  24. int pozycjaMyszyX; // na ekranie
  25. int pozycjaMyszyY;
  26. int mbutton; // wcisiety klawisz myszy
  27.  
  28. double kameraX= -30.0;
  29. double kameraZ = 20.0;
  30. double kameraD = -4.0;
  31. double kameraPredkosc;
  32. double kameraKat = 90;
  33. double kameraPredkoscObrotu;
  34. double poprzednie_kameraX;
  35. double poprzednie_kameraZ;
  36. double poprzednie_kameraD;
  37.  
  38. double rotation = 0;
  39. //do tekstury potrzeba, załadować programID a trianglesID = loadShaders("vertex_shader.glsl", "fragment_shader2.glsl");
  40. //wczytajteksture i setup tekstur
  41. //dodac plik
  42.  
  43.  
  44. //macierze
  45. glm::mat4 MV; //modelview - macierz modelu i świata
  46. glm::mat4 P; //projection - macierz projekcji, czyli naszej perspektywy
  47.  
  48. //trojkaty
  49. float vertices[] = {
  50. 0.0f, 1.0f, 0.0f,
  51. 0.0f, 0.0f, 0.0f,
  52. 1.0f, 0.0f, 0.0f
  53.  
  54. };
  55. //trojkatyy
  56. float vertices1[] = {
  57.  
  58. 0.0f, 1.0f, 0.0f,
  59. 1.0f, 1.0f, 0.0f,
  60. 1.0f, 0.0, 0.0f
  61.  
  62. };
  63. //prostokąt
  64. float vertices2[] = {
  65. 0.0f, 0.0f, 0.0f,
  66. 0.0f, 0.0f, 2.0f,
  67. 0.0f, 1.0f, 2.0f,
  68. 0.0f, 1.0f, 0.0f
  69. };
  70. //podłoga
  71. float vertices3[] = {
  72. -5, -1, 5,
  73. 5, -1, 5,
  74. 5, -1, -5,
  75. -5, -1, -5
  76. };
  77.  
  78. GLuint elements3[] = {
  79. 0, 1, 2, 3
  80. };
  81.  
  82. //kostka
  83. /*float vertices4[] = {
  84. -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
  85. 0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
  86. 0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
  87. 0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
  88. -0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
  89. -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f,
  90.  
  91. -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f,
  92. 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f,
  93. 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f,
  94. 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f,
  95. -0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f,
  96. -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f,
  97.  
  98. -0.5f, 0.5f, 0.5f, -1.0f, 0.0f, 0.0f,
  99. -0.5f, 0.5f, -0.5f, -1.0f, 0.0f, 0.0f,
  100. -0.5f, -0.5f, -0.5f, -1.0f, 0.0f, 0.0f,
  101. -0.5f, -0.5f, -0.5f, -1.0f, 0.0f, 0.0f,
  102. -0.5f, -0.5f, 0.5f, -1.0f, 0.0f, 0.0f,
  103. -0.5f, 0.5f, 0.5f, -1.0f, 0.0f, 0.0f,
  104.  
  105. 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f,
  106. 0.5f, 0.5f, -0.5f, 1.0f, 0.0f, 0.0f,
  107. 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f,
  108. 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f,
  109. 0.5f, -0.5f, 0.5f, 1.0f, 0.0f, 0.0f,
  110. 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f,
  111.  
  112. -0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f,
  113. 0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f,
  114. 0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f,
  115. 0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f,
  116. -0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f,
  117. -0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f,
  118.  
  119. -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f,
  120. 0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f,
  121. 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f,
  122. 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f,
  123. -0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f,
  124. -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f
  125. }; */
  126.  
  127. GLfloat vertices4[] = {
  128. // front
  129. -1.0, -1.0, 1.0,
  130. 1.0, -1.0, 1.0,
  131. 1.0, 1.0, 1.0,
  132. -1.0, 1.0, 1.0,
  133. // back
  134. -1.0, -1.0, -1.0,
  135. 1.0, -1.0, -1.0,
  136. 1.0, 1.0, -1.0,
  137. -1.0, 1.0, -1.0
  138. };
  139.  
  140. GLuint elements4[] = {
  141. // front colors
  142. 1,0,0,
  143. 0,1,0,
  144. 0,0,1,
  145. 1,1,1,
  146.  
  147. 1, 0, 0,
  148. 0, 1, 0,
  149. 0, 0, 1,
  150. 1, 1, 1,
  151.  
  152. };
  153.  
  154.  
  155. //unsigned int VBO4, cubeVAO4;
  156.  
  157.  
  158. int elements[] = { 0,1,2 };
  159. int elements1[] = {0,1,2};
  160. int elements2[] = {0,1,2,3};
  161.  
  162. float texCoords[] = {
  163. 0.5, 0,
  164. 1, 1,
  165. 0,1
  166. };
  167.  
  168. float texCoords1[] = {
  169. 0, 1,
  170. 1,1,
  171. 0.5,0
  172. };
  173.  
  174. //float texCoords2[] = {
  175. // 0,1,
  176. // 1,1,
  177. // 1,0,
  178. // 0,0
  179. //};
  180.  
  181.  
  182. //shaders
  183. GLuint programID = 0;
  184. GLuint trianglesID = 0;
  185.  
  186. unsigned int VBO;
  187. unsigned int VBO1;
  188. unsigned int VBO2;
  189. unsigned int VBO3;
  190. unsigned int VBO4;
  191.  
  192. GLuint EBO;
  193. GLuint EBO1;
  194. GLuint EBO2;
  195. GLuint EBO3;
  196. GLuint EBO4;
  197.  
  198. GLuint VAO[5];
  199.  
  200. int texid1;
  201. int texid2;
  202.  
  203. GLuint vtex;
  204. GLuint vtex1;
  205.  
  206. int sampler_id;
  207. int sampler_id2;
  208.  
  209.  
  210.  
  211. float opacity = 1.0;
  212.  
  213.  
  214. /*###############################################################*/
  215. void mysz(int button, int state, int x, int y)
  216. {
  217. mbutton = button;
  218. switch (state)
  219. {
  220. case GLUT_UP:
  221. break;
  222. case GLUT_DOWN:
  223. pozycjaMyszyX = x;
  224. pozycjaMyszyY = y;
  225. poprzednie_kameraX = kameraX;
  226. poprzednie_kameraZ = kameraZ;
  227. poprzednie_kameraD = kameraD;
  228. break;
  229.  
  230. }
  231. }
  232. /*******************************************/
  233. void mysz_ruch(int x, int y)
  234. {
  235. if (mbutton == GLUT_LEFT_BUTTON)
  236. {
  237. kameraX = poprzednie_kameraX - (pozycjaMyszyX - x) * 0.1;
  238. kameraZ = poprzednie_kameraZ - (pozycjaMyszyY - y) * 0.1;
  239. }
  240. if (mbutton == GLUT_RIGHT_BUTTON)
  241. {
  242. kameraD = poprzednie_kameraD + (pozycjaMyszyY - y) * 0.1;
  243. }
  244.  
  245. }
  246. /******************************************/
  247.  
  248. double dx = 1;
  249.  
  250. void klawisz(GLubyte key, int x, int y)
  251. {
  252. switch (key) {
  253.  
  254. case 27: /* Esc - koniec */
  255. exit(1);
  256. break;
  257.  
  258. case 'x':
  259. dx += 0.1;
  260. break;
  261. case '1':
  262.  
  263. break;
  264. case '2':
  265.  
  266. break;
  267. }
  268.  
  269.  
  270. }
  271. /*###############################################################*/
  272. void rysuj(void)
  273. {
  274.  
  275. //GLfloat color[] = { 1.0f, 0.0f, 0.0f, 1.0f };
  276. //glClearBufferfv(GL_COLOR, 0, color);
  277. glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
  278. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Kasowanie ekranu
  279.  
  280. glUseProgram(programID); //u┐yj programu, czyli naszego shadera
  281.  
  282. MV = glm::mat4(1.0f); //macierz jednostkowa
  283. MV = glm::translate(MV, glm::vec3(dx, 0, kameraD));
  284. MV = glm::rotate(MV, (float)glm::radians(kameraZ), glm::vec3(1, 0, 0));
  285. MV = glm::rotate(MV, (float)glm::radians(kameraX), glm::vec3(0, 1, 0));
  286.  
  287. glm::mat4 MVP = P * MV;
  288.  
  289. /*Zmienne jednorodne (ang. uniform variable), zwane także zmiennym globalnymi,sązmiennymi,
  290. których wartośc jest stała w obrębie obiektu programu. Shadery mogą zmienne jednorodne tylko odczytywac */
  291.  
  292. GLuint MVP_id = glGetUniformLocation(programID, "MVP"); // pobierz lokalizację zmiennej 'uniform' "MV" w programie
  293. glUniformMatrix4fv(MVP_id, 1, GL_FALSE, &(MVP[0][0])); // wyślij tablicę mv do lokalizacji "MV", która jest typu mat4
  294.  
  295. glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
  296.  
  297.  
  298. //glBindVertexArray(VAO[2]);
  299. //glVertexAttrib3f(2, 0.75f, 0.0f, 1.0f); //do zmiany koloru
  300. //glDrawElements(GL_QUADS, 4, GL_UNSIGNED_INT, 0);
  301.  
  302. glBindVertexArray( VAO[ 4 ] );
  303. glVertexAttrib3f( 2, 0.75f, 0.0f, 1.0f ); //do zmiany koloru
  304. glDrawElements( GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0 );
  305.  
  306. //glBindVertexArray( cubeVAO4 );
  307. //glDrawArrays( GL_TRIANGLES, 0, 36 );
  308.  
  309.  
  310.  
  311.  
  312. //do uzycia tekstur
  313. //glUseProgram(trianglesID);
  314. //MVP_id = glGetUniformLocation(trianglesID, "MVP"); // pobierz lokalizację zmiennej 'uniform' "MV" w programie
  315. //glUniformMatrix4fv(MVP_id, 1, GL_FALSE, &(MVP[0][0])); // wyślij tablicę mv do lokalizacji "MV", która jest typu mat4
  316.  
  317. //glActiveTexture(GL_TEXTURE0);
  318.  
  319. //glBindVertexArray(VAO[0]); //bindowanie poszczegolnych figur
  320.  
  321. //glVertexAttrib3f(1, 1.0f, 1.0, 0.0f);
  322.  
  323. //glBindTexture(GL_TEXTURE_2D,texid1);
  324. //glUniform1i(sampler_id,0);
  325. //glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_INT,0);
  326.  
  327. //glActiveTexture(GL_TEXTURE1);
  328.  
  329. //glBindVertexArray(VAO[1]);
  330.  
  331. //glVertexAttrib3f(2, .0f, 0.0f, 0.0f);
  332.  
  333. //glBindTexture(GL_TEXTURE_2D,texid1);
  334. //glUniform1i(sampler_id,1);
  335.  
  336. //glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_INT,0);
  337.  
  338.  
  339. glFlush();
  340. glutSwapBuffers();
  341.  
  342. }
  343. /*###############################################################*/
  344. void rozmiar(int width, int height)
  345. {
  346. screen_width = width;
  347. screen_height = height;
  348.  
  349. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  350. glViewport(0, 0, screen_width, screen_height);
  351.  
  352. P = glm::perspective(glm::radians(60.0f), (GLfloat)screen_width / (GLfloat)screen_height, 1.0f, 1000.0f);
  353.  
  354. glutPostRedisplay(); // Przerysowanie sceny
  355. }
  356.  
  357. /*###############################################################*/
  358. void idle()
  359. {
  360.  
  361. glutPostRedisplay();
  362. }
  363.  
  364. /*###############################################################*/
  365. float k = 0.1f;
  366.  
  367. void timer(int value) {
  368.  
  369. opacity -= k;
  370.  
  371. if(opacity>1 || opacity<0)
  372. k=-k;
  373.  
  374. //GLfloat attrib[] = { ad, 0.0f,0.0f };
  375. // Aktualizacja wartości atrybutu wejściowego 1.
  376. //glVertexAttrib3fv(1, attrib);
  377.  
  378. /*
  379.  
  380. W vertex_shader np:
  381. layout (location = 1) in vec3 incolor;
  382.  
  383. */
  384. glutTimerFunc(25, timer, 0);
  385. }
  386. /*###############################################################*/
  387. int main(int argc, char **argv)
  388. {
  389.  
  390. glutInit(&argc, argv);
  391. glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB | GLUT_DEPTH);
  392. glutInitWindowSize(screen_width, screen_height);
  393. glutInitWindowPosition(0, 0);
  394. glutCreateWindow("Kolokwium");
  395.  
  396. glewInit(); //init rozszerzeszeń OpenGL z biblioteki GLEW
  397.  
  398. glutDisplayFunc(rysuj); // def. funkcji rysuj¦cej
  399. glutIdleFunc(idle); // def. funkcji rysuj¦cej w czasie wolnym procesoora (w efekcie: ci¦gle wykonywanej)
  400. glutTimerFunc(20, timer, 0);
  401. glutReshapeFunc(rozmiar); // def. obs-ugi zdarzenia resize (GLUT)
  402.  
  403. glutKeyboardFunc(klawisz); // def. obsługi klawiatury
  404. glutMouseFunc(mysz); // def. obsługi zdarzenia przycisku myszy (GLUT)
  405. glutMotionFunc(mysz_ruch); // def. obsługi zdarzenia ruchu myszy (GLUT)
  406.  
  407.  
  408. glEnable(GL_DEPTH_TEST);
  409.  
  410. //glPointSize(3.0f);
  411.  
  412.  
  413. /* úadowanie shadera, tworzenie programu *************************/
  414. /* i linkowanie go oraz sprawdzanie b│ŕdˇw! **********************/
  415. programID = loadShaders("vertex_shader.glsl", "fragment_shader.glsl");
  416. trianglesID = loadShaders("vertex_shader.glsl", "fragment_shader2.glsl");
  417.  
  418. //setup textur
  419. texid1 = WczytajTeksture("monalisa.bmp");
  420.  
  421. glActiveTexture(GL_TEXTURE0);
  422. glBindTexture(GL_TEXTURE_2D, texid1);
  423. sampler_id = glGetUniformLocation(trianglesID, "texSampler");
  424. glUniform1i(sampler_id,0);
  425.  
  426.  
  427. glActiveTexture(GL_TEXTURE1);
  428. glBindTexture(GL_TEXTURE_2D, texid1);
  429. glUniform1i(sampler_id,1);
  430.  
  431.  
  432. glGenVertexArrays(3,VAO);
  433.  
  434. //tworzenie bufora wierzcholków
  435. ///
  436. glGenBuffers(1,&vtex);
  437. glBindBuffer(GL_ARRAY_BUFFER, vtex);
  438. glBufferData(GL_ARRAY_BUFFER, sizeof(texCoords), texCoords, GL_STATIC_DRAW);
  439.  
  440. glGenBuffers(1,&vtex1);
  441. glBindBuffer(GL_ARRAY_BUFFER, vtex1);
  442. glBufferData(GL_ARRAY_BUFFER, sizeof(texCoords1), texCoords1, GL_STATIC_DRAW);
  443. ///
  444. glGenBuffers( 1, &VBO4 );
  445. glBindBuffer( GL_ARRAY_BUFFER, VBO4 );
  446. glBufferData( GL_ARRAY_BUFFER, sizeof( vertices4 ), vertices4, GL_STATIC_DRAW );
  447.  
  448. glGenBuffers( 1, &EBO4 );
  449. glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, EBO4 );
  450. glBufferData( GL_ELEMENT_ARRAY_BUFFER, sizeof( elements4 ), elements4, GL_STATIC_DRAW );
  451. ///
  452. glGenBuffers( 1, &VBO3 );
  453. glBindBuffer( GL_ARRAY_BUFFER, VBO3 );
  454. glBufferData( GL_ARRAY_BUFFER, sizeof( vertices3 ), vertices3, GL_STATIC_DRAW );
  455.  
  456. glGenBuffers( 1, &EBO3 );
  457. glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, EBO3 );
  458. glBufferData( GL_ELEMENT_ARRAY_BUFFER, sizeof( elements3 ), elements3, GL_STATIC_DRAW );
  459. ///
  460. glGenBuffers(1, &VBO2);
  461. glBindBuffer(GL_ARRAY_BUFFER, VBO2);
  462. glBufferData(GL_ARRAY_BUFFER, sizeof(vertices2), vertices2, GL_STATIC_DRAW);
  463.  
  464. glGenBuffers(1,&EBO2);
  465. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO2);
  466. glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(elements2), elements2, GL_STATIC_DRAW);
  467.  
  468. ///
  469. glGenBuffers(1, &VBO1);
  470. glBindBuffer(GL_ARRAY_BUFFER, VBO1);
  471. glBufferData(GL_ARRAY_BUFFER, sizeof(vertices1), vertices1, GL_STATIC_DRAW);
  472.  
  473. glGenBuffers(1, &EBO1);
  474. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO1);
  475. glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements1), elements1, GL_STATIC_DRAW);
  476.  
  477. ///
  478. glGenBuffers(1, &VBO);
  479. glBindBuffer(GL_ARRAY_BUFFER, VBO);
  480. glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
  481.  
  482. glGenBuffers(1,&EBO);
  483. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
  484. glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(elements), elements, GL_STATIC_DRAW);
  485.  
  486.  
  487. //VAO
  488. glBindVertexArray(VAO[0]);
  489.  
  490. glBindBuffer(GL_ARRAY_BUFFER, vtex);
  491. glEnableVertexAttribArray(1);
  492. glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, 0);
  493.  
  494. glBindBuffer(GL_ARRAY_BUFFER, VBO);
  495. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,EBO);
  496. glEnableVertexAttribArray(0);
  497. glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0 );
  498.  
  499. //VAO1
  500. glBindVertexArray(VAO[1]);
  501.  
  502. glBindBuffer(GL_ARRAY_BUFFER, vtex1);
  503. glEnableVertexAttribArray(1);
  504. glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, 0);
  505.  
  506. glBindBuffer(GL_ARRAY_BUFFER, VBO1);
  507. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO1);
  508. glEnableVertexAttribArray(0);
  509. glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
  510.  
  511. //VAO2
  512. glBindVertexArray(VAO[2]);
  513.  
  514. glBindBuffer(GL_ARRAY_BUFFER, VBO2);
  515. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,EBO2);
  516. glEnableVertexAttribArray(0);
  517. glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0 );
  518.  
  519. //VA03
  520. glBindVertexArray( VAO[ 3 ] );
  521.  
  522. glBindBuffer( GL_ARRAY_BUFFER, VBO3 );
  523. glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, EBO3 );
  524. glEnableVertexAttribArray( 0 );
  525. glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, 0, ( void* )0 );
  526.  
  527. //Vao4
  528. glBindVertexArray( VAO[ 4 ] );
  529.  
  530. glBindBuffer( GL_ARRAY_BUFFER, VBO4 );
  531. glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, EBO4 );
  532. glEnableVertexAttribArray( 0 );
  533. glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, 0, ( void* )0 );
  534.  
  535.  
  536.  
  537. ///kostka
  538. //glGenVertexArrays( 1, &cubeVAO4 );
  539. //glBindVertexArray( cubeVAO4 );
  540. //glGenBuffers( 1, &VBO4 );
  541.  
  542. //glBindBuffer( GL_ARRAY_BUFFER, VBO4 );
  543. //glBufferData( GL_ARRAY_BUFFER, sizeof( vertices4 ), vertices4, GL_STATIC_DRAW );
  544.  
  545. // position attribute
  546. //glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof( float ), ( void* )0 );
  547. //glEnableVertexAttribArray( 0 );
  548. // normal attribute
  549. //glVertexAttribPointer( 1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof( float ), ( void* )( 3 * sizeof( float ) ) );
  550. //glEnableVertexAttribArray( 1 );
  551.  
  552.  
  553. ////glBindBuffer(GL_ARRAY_BUFFER, VBO);
  554. ////glEnableVertexAttribArray(0); // pierwszy buform atrybuˇw: wierzcho│ki
  555. //glVertexAttribPointer(
  556. // 0, // atrybut 0. musi odpowiadaŠ atrybutowi w programie shader
  557. // 3, // wielkoťŠ (x,y,z)
  558. // GL_FLOAT, // typ
  559. // GL_FALSE, // czy znormalizowany [0-1]?
  560. // 0, // stride
  561. // (void*)0 // array buffer offset
  562. //);
  563.  
  564. glutMainLoop(); // start
  565.  
  566. glDeleteBuffers(1, &VBO);
  567. glDeleteBuffers(1, &VBO1);
  568. glDeleteBuffers(1, &VBO2);
  569.  
  570. return(0);
  571. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement