bokunda

OpenGL House

Oct 10th, 2018
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.53 KB | None | 0 0
  1. // Vezbe_1.cpp : This file contains the 'main' function. Program execution begins and ends there.
  2. //
  3.  
  4. #include "pch.h"
  5. #include <iostream>
  6. #include <GL/freeglut.h>
  7.  
  8. void roof1(void)
  9. {
  10.     // Bira se boja koja ce se koristiti u poligonu za prikaz
  11.     glColor3f(0.91, 0.51, 0.51);
  12.  
  13.     // Crtanje poligona krece iz donjeg levog ugla
  14.     glBegin(GL_POLYGON);
  15.  
  16.     // Na ekranu bice vidljive koordinate na intervalu 0.0 - 1.0
  17.     glVertex3f(0.25, 0.45, 0.0); // DL
  18.     glVertex3f(0.75, 0.45, 0.0); // DR
  19.     glVertex3f(0.65, 0.75, 0.0); // GR
  20.     glVertex3f(0.35, 0.75, 0.0); // GL
  21.  
  22.     glEnd();
  23. }
  24.  
  25. void roof2(void)
  26. {
  27.     // Sada ne zelimo da cistimo bafer, jer zelimo prikazati dva elementa
  28.     // glClear(GL_COLOR_BUFFER_BIT);
  29.  
  30.     // Bira se boja koja ce se koristiti u poligonu za prikaz
  31.     glColor3f(0.91, 0.91, 0.51);
  32.  
  33.     // Crtanje poligona krece iz donjeg levog ugla
  34.     glBegin(GL_POLYGON);
  35.  
  36.     // Na ekranu bice vidljive koordinate na intervalu 0.0 - 1.0
  37.     glVertex3f(0.45, 0.45, 1.0); // DL
  38.     glVertex3f(0.75, 0.45, 1.0); // DR
  39.     glVertex3f(0.65, 0.75, 0.0); // GR
  40.     glVertex3f(0.35, 0.75, 0.0); // GL
  41.  
  42.     glEnd();
  43. }
  44.  
  45. void base(void)
  46. {
  47.     glColor3f(0.36, 0.9, 0.9);
  48.  
  49.     glBegin(GL_POLYGON);
  50.    
  51.     glVertex3f(0.27, 0.16, 0);
  52.     glVertex3f(0.73, 0.16, 0);
  53.     glVertex3f(0.73, 0.45, 0);
  54.     glVertex3f(0.27, 0.45, 0);
  55.  
  56.     glEnd();
  57. }
  58.  
  59. void door(void)
  60. {
  61.     glColor3f(0.36, 0.4, 0.4);
  62.  
  63.     glBegin(GL_POLYGON);
  64.  
  65.     glVertex3f(0.30, 0.16, 0);
  66.     glVertex3f(0.40, 0.16, 0);
  67.     glVertex3f(0.40, 0.36, 0);
  68.     glVertex3f(0.30, 0.36, 0);
  69.  
  70.     glEnd();
  71. }
  72.  
  73. void circle(float radius)
  74. {
  75.     glColor3f(0.36, 0.4, 1);
  76.     glBegin(GL_POLYGON); // GL_LINE_LOOP
  77.    
  78.     for (int i = 0; i < 360; i++)
  79.     {
  80.         float degInRad = i * (3.14159 / 180);
  81.         glVertex2f(cos(degInRad)*radius + 0.348, sin(degInRad)*radius + 0.56);
  82.     }
  83.  
  84.     glEnd();
  85. }
  86.  
  87. void display(void)
  88. {
  89.     // Navodimo koji bafer zelimo ocistiti
  90.     glClear(GL_COLOR_BUFFER_BIT);
  91.  
  92.     roof1();
  93.     roof2();
  94.     base();
  95.     door();
  96.     circle(0.036);
  97.  
  98.     // Prikaz sadrzaja bafera
  99.     glFlush();
  100. }
  101.  
  102. void init(void)
  103. {
  104.     // Postavlja pozadinu ekrana
  105.     glClearColor(0.0, 0.0, 0.0, 0.0);
  106.    
  107.     glMatrixMode(GL_PROJECTION);
  108.     glLoadIdentity();
  109.  
  110.     // Koji deo modela ce biti prikazan
  111.     glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
  112. }
  113.  
  114. int main(int argc, char* argv[])
  115. {
  116.     glutInit(&argc, argv);
  117.  
  118.     // Inicijalizacija, mod za prikaz, velicina, pozicija, naziv prozora
  119.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  120.     glutInitWindowSize(250, 250);
  121.     glutInitWindowPosition(100, 80);
  122.     glutCreateWindow("Hello");
  123.  
  124.     init();
  125.  
  126.     glutDisplayFunc(display);
  127.     glutMainLoop();
  128.  
  129.     return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment