Guest User

Grafika pelda program

a guest
Jan 18th, 2014
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. #include <math.h>
  2. #include <stdlib.h>
  3.  
  4. #if defined(__APPLE__)
  5.   #include <OpenGL/gl.h>
  6.   #include <OpenGL/glu.h>
  7.   #include <GLUT/glut.h>
  8. #else
  9.   #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
  10.     #include <windows.h>
  11.   #endif
  12.   #include <GL/gl.h>
  13.   #include <GL/glu.h>
  14.   #include <GL/glut.h>
  15. #endif
  16.  
  17. void onInitialization() {
  18. }
  19.  
  20. #define CIRCLE_RESOLUTION 32
  21.  
  22. void onDisplay() {
  23.   glClear(GL_COLOR_BUFFER_BIT);
  24.  
  25.   // A piros kor, a kepernyo bal oldalan
  26.   glBegin(GL_TRIANGLE_FAN); {
  27.     float radius = 0.25f, center_x = -0.5f, center_y = 0.4f;
  28.  
  29.     glColor3f(1.0f, 0.0f, 0.0f);
  30.     glVertex2f(center_x, center_y);
  31.  
  32.     for(int i = 0; i <= CIRCLE_RESOLUTION; i++) {
  33.       float angle = float(i) / CIRCLE_RESOLUTION * 2.0f * M_PI;
  34.       // Itt a kor paramtetrikus alakjat hasznaljuk: x = x0 + r*cos(t), y = y0 + r * sin(t)
  35.       glVertex2f(center_x + radius*cos(angle), center_y + radius*sin(angle));
  36.     }
  37.   } glEnd();
  38.  
  39.   // Szinatmenetes kor, a kepernyo jobb oldalan
  40.   glBegin(GL_TRIANGLE_FAN); {
  41.     float radius = 0.25f, center_x = 0.5f, center_y = 0.4f;
  42.  
  43.     glColor3f(0.0f, 1.0f, 1.0f);
  44.     glVertex2f(center_x, center_y);
  45.    
  46.     for(int i = 0; i <= CIRCLE_RESOLUTION; i++) {
  47.       float angle = float(i) / CIRCLE_RESOLUTION * 2.0f * M_PI;
  48.       glColor3f(0.0f, 0.5f + 0.5f*cos(angle), 0.5f + 0.5f*sin(angle));
  49.       glVertex2f(center_x + radius*cos(angle), center_y + radius*sin(angle));
  50.     }
  51.   } glEnd();
  52.  
  53.   // Felkoriv
  54.   glBegin(GL_LINE_STRIP); {
  55.     float radius = 0.75f, center_x = 0.0f, center_y = 0.0f;
  56.  
  57.     glColor3f(1.0f, 1.0f, 1.0f);
  58.    
  59.     for(int i = CIRCLE_RESOLUTION/2; i <= CIRCLE_RESOLUTION; i++) {
  60.       float angle = float(i) / CIRCLE_RESOLUTION * 2.0f * M_PI;
  61.       glVertex2f(center_x + radius*cos(angle), center_y + radius*sin(angle));
  62.     }
  63.   } glEnd();
  64.  
  65.   glutSwapBuffers();
  66. }
  67.  
  68. void onMouse(int, int, int, int) {
  69. }
  70.  
  71. void onMouseMotion(int, int) {
  72. }
  73.  
  74. void onKeyboard(unsigned char, int, int) {
  75. }
  76.  
  77. void onKeyboardUp(unsigned char, int, int) {
  78. }
  79.  
  80. void onIdle() {
  81. }
  82.  
  83. int main(int argc, char **argv) {
  84.   glutInit(&argc, argv);
  85.   glutInitWindowSize(600, 600);
  86.   glutInitWindowPosition(100, 100);
  87.   glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
  88.  
  89.   glutCreateWindow("Grafika pelda program");
  90.  
  91.   glMatrixMode(GL_MODELVIEW);
  92.   glLoadIdentity();
  93.   glMatrixMode(GL_PROJECTION);
  94.   glLoadIdentity();
  95.  
  96.   onInitialization();
  97.  
  98.   glutDisplayFunc(onDisplay);
  99.   glutMouseFunc(onMouse);
  100.   glutIdleFunc(onIdle);
  101.   glutKeyboardFunc(onKeyboard);
  102.   glutKeyboardUpFunc(onKeyboardUp);
  103.   glutMotionFunc(onMouseMotion);
  104.  
  105.   glutMainLoop();
  106.  
  107.   return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment