Advertisement
Guest User

Untitled

a guest
Oct 5th, 2015
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. #include <GLFW/glfw3.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
  6. {
  7. if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
  8. glfwSetWindowShouldClose(window, GL_TRUE); // close program on ESC key
  9. }
  10.  
  11. void setup_viewport(GLFWwindow* window)
  12. {
  13. /*
  14. float ratio;
  15. int width, height;
  16. glfwGetFramebufferSize(window, &width, &height);
  17. ratio = width / (float) height;
  18. glViewport(0, 0, width, height);
  19. */
  20.  
  21. glClear(GL_COLOR_BUFFER_BIT);
  22. glMatrixMode(GL_PROJECTION);
  23. glLoadIdentity();
  24. glOrtho(-10, 10, -10, 10, 1.f, -1.f);
  25. glMatrixMode(GL_MODELVIEW);
  26. glLoadIdentity();
  27. }
  28.  
  29. void grid(int baris, int kolom)
  30. {
  31. int i;
  32. int kiri = -kolom/2; //batas kiri x
  33. int kanan = kolom/2; //batas kanan x
  34. int bawah = -baris/2; //batas bawah y
  35. int atas = baris/2; //batas atas y
  36.  
  37. glColor3f(0.5,0.5,0.5);
  38. glBegin(GL_LINES);
  39. //Baris digambar dari atas ke bawah
  40. for(i=0;i<baris+1;i++){
  41. glVertex2f( kiri, baris/2-i);
  42. glVertex2f(kanan, baris/2-i);
  43. }
  44.  
  45. //Kolom digambar dari kanan ke kiri
  46. for(i=0;i<kolom+1;i++){
  47. glVertex2f(kolom/2-i, bawah);
  48. glVertex2f(kolom/2-i, atas);
  49. }
  50.  
  51. //Garis tengah
  52. glColor3f(0.8,0.8,0.8);
  53. glVertex2f(kiri,0);
  54. glVertex2f(kanan,0);
  55. glVertex2f(0,bawah);
  56. glVertex2f(0, atas);
  57.  
  58. glEnd();
  59. }
  60.  
  61. void rectangle(float a, float b){
  62. a/=2;
  63. b/=2;
  64. glBegin(GL_POLYGON);
  65. glVertex2f(a,b);
  66. glVertex2f(-a,b);
  67. glVertex2f(-a,-b);
  68. glVertex2f(a, -b);
  69. glEnd();
  70. }
  71.  
  72. void sail()
  73. {
  74. int height=8;
  75. int width=2;
  76. glColor3ub(153,44,0);
  77. rectangle(width,height);
  78.  
  79. width=width/2;
  80. glColor3ub(243,134,48);
  81. glLineWidth(5);
  82. for(int i=2; i<height-2; i++)
  83. {
  84. glBegin(GL_LINE_LOOP);
  85. glVertex2f( width,-height + i*2);
  86. glVertex2f(-width,-height + i*2);
  87. glVertex2f(-width,-height + (i+1)*2);
  88. glVertex2f( width,-height + (i+1)*2);
  89. glEnd();
  90. }
  91. glLineWidth(1);
  92. }
  93.  
  94. void kincir()
  95. {
  96. glPushMatrix();
  97. glTranslatef(0,5,0);
  98. sail();
  99. glTranslatef(0,-10,0);
  100. sail();
  101. glRotatef(90,0,0,1);
  102. glTranslatef(5,-5,0);
  103. sail();
  104. glTranslatef(0,10,0);
  105. sail();
  106. }
  107. float sudut = 0.0;
  108. void display()
  109. {
  110. grid(20,20);
  111.  
  112. glPushMatrix();
  113. glRotatef(sudut,0,0,1);
  114. kincir();
  115. glPopMatrix();
  116. sudut += 1;
  117.  
  118. }
  119.  
  120. int main(void)
  121. {
  122. GLFWwindow* window;
  123.  
  124. if (!glfwInit()) exit(EXIT_FAILURE);
  125.  
  126. window = glfwCreateWindow(500, 500, "Kincir", NULL, NULL);
  127.  
  128. if (!window)
  129. {
  130. glfwTerminate();
  131. exit(EXIT_FAILURE);
  132. }
  133.  
  134. glfwMakeContextCurrent(window);
  135. glfwSwapInterval(1);
  136. glfwSetKeyCallback(window, key_callback);
  137.  
  138. while (!glfwWindowShouldClose(window))
  139. {
  140. setup_viewport(window);
  141.  
  142. display();
  143.  
  144. glfwSwapBuffers(window);
  145. glfwPollEvents();
  146. }
  147. glfwDestroyWindow(window);
  148. glfwTerminate();
  149.  
  150. exit(EXIT_SUCCESS);
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement