Advertisement
Guest User

Untitled

a guest
May 21st, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. #include <windows.h> // pentru SO Windows
  2. #include <GL/glut.h> // GLUT, includes glu.h and gl.h
  3. #include <stdio.h>
  4. int gridX,gridY;
  5. void timer_callback();
  6. void display_apeleaza();
  7. void reshape_callback(int, int);
  8. void initGrid(int , int);
  9. void drawGrid();
  10.  
  11. void init()
  12. {
  13. //setarea culorii de fundal negru si opacitate 100%
  14. glClearColor(0.0f,0.0f,0.0f,1.0f);
  15. initGrid(40,40);
  16. }
  17. int main(int argc, char** argv){
  18. //initializare GLUT
  19. glutInit(&argc, argv);
  20. //display RGB cu double frame buffering
  21. //cand desenarea unui frame este completa atunci cei doi
  22. //bufferi sunt interschimbati
  23. glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
  24. //configurarea dimensiunilor ferestrei grafice
  25. glutInitWindowSize(500, 500);
  26. //pozitionarea ferestrei grafice
  27. glutInitWindowPosition(50, 50);
  28. //crearea ferestrei grafice cu specificarea numelui
  29. glutCreateWindow("SNAKE");
  30. //inregistrarea functiei display_apeleaza() pentru redare
  31. glutDisplayFunc(display_apeleaza);
  32. //indica ce actiune este necesara a se efectua in cazul
  33. //in care fereastra este redimensionata
  34. glutReshapeFunc(reshape_callback);
  35. glutTimerFunc(0,timer_callback,0);
  36. init();
  37. //initializarea buclei infinite pentru redare
  38. glutMainLoop();
  39. return 0;
  40. }
  41.  
  42. //test
  43. int index = 0;
  44. //functie apelata la fiecare re-desenare
  45. void display_apeleaza()
  46. {
  47. //aplicarea modificarilor de culoare
  48. glClear(GL_COLOR_BUFFER_BIT);
  49. //Apelarea functiei drawGrid
  50. drawGrid();
  51. //patratel ce se misca
  52. glRectd(index,20,index+2,22);
  53. index++;
  54. if(index>40)
  55. {
  56. index = 0;
  57. }
  58. //finalizare patratel ce se misca
  59. //interschimbarea bufferelor
  60. glutSwapBuffers();
  61. }
  62.  
  63. void reshape_callback(int w, int h)
  64. {
  65. //Pozitia viewport-ului dupa resize
  66. glViewport(0,0,(GLsizei)w,(GLsizei)h);
  67. glMatrixMode(GL_PROJECTION);
  68. glLoadIdentity();
  69. //Joc 2D asa ca vom folosii proiectia ortogonala
  70. glOrtho(0.0,40.0,0.0,40.0,-1.0,1.0);
  71. glMatrixMode(GL_MODELVIEW);
  72. }
  73. //Initializam numarul de coloane si linii in forma de patrate
  74. void initGrid(int x, int y)
  75. {
  76. gridX=x;
  77. gridY=y;
  78. }
  79. void unit(int,int);
  80. //Desenam numarul de coloane si linii in forma de patrate
  81. void drawGrid()
  82. {
  83. //Initializarea pozitiilor patratelor pe linie/coloana
  84. for(int x = 0; x < gridX; x++)
  85. {
  86. for(int y = 0; y < gridY; y++)
  87. {
  88. unit(x,y);
  89. }
  90. }
  91. }
  92. //Marimea unitatii de masurare
  93. void unit(int x,int y)
  94. {
  95. //Schimbam culoarea patratelor exterioare in rosu
  96. if(x == 0 || y == 0 || x == gridX - 1 || y == gridY - 1)
  97. {
  98. //grosime linie
  99. glLineWidth(3.0);
  100. //culoare linie
  101. glColor3f(1.0,0.0,0.0);
  102. }
  103. else
  104. {
  105. glLineWidth(1.0);
  106. glColor3f(1.0,1.0,1.0);
  107. }
  108. //Linii conectate intre ele
  109. glBegin(GL_LINE_LOOP);
  110. glVertex2f(x,y);
  111. glVertex2f(x+1,y);
  112. glVertex2f(x+1,y+1);
  113. glVertex2f(x,y+1);
  114. glEnd();
  115. }
  116. void timer_callback()
  117. {
  118.  
  119. glutPostRedisplay();
  120. glutTimerFunc(100,timer_callback,0);
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement