Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include<cmath>
  4. #include <algorithm>
  5.  
  6. #include <GL/glut.h>
  7. #include <GL/gl.h>
  8. #include <GL/glu.h>
  9. #include <vector>
  10. using namespace std;
  11.  
  12. double scale = 1.0;
  13.  
  14. void draw_line(double x, double y, double x1, double y1) {
  15.     glBegin(GL_LINES);
  16.     glVertex2d(x, y);
  17.     glVertex2d(x1, y1);
  18.     glEnd();
  19. }
  20.  
  21. void draw_restangle(float x, float y,float d,float r ) {
  22.     draw_line(x,y,d+x,y);//niz
  23.     draw_line(d+x,y,d+x,r+y);//pravo
  24.     draw_line(x,r+y,x+d,r+y);//verx
  25.     draw_line(x,y,x,y+r);//levo
  26.  
  27.  
  28. }
  29.  
  30.  
  31. void Render() {
  32.         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  33.         glLoadIdentity();
  34.         glTranslatef(0, 0, -10);
  35.         glColor3d(1, 1, 1);
  36.         glScalef(scale, scale, scale);
  37.         //
  38.         draw_restangle(0,0,5,2);
  39.         //
  40.         glFlush();
  41.  
  42. }
  43.  
  44. void update(int t) {
  45.     Render();
  46.     glutTimerFunc(1, update, 0);
  47. }
  48.  
  49. void keyb(unsigned char key, int x, int y) {
  50.  
  51.     Render();
  52. }
  53.  
  54. void reshape(int w, int h) {
  55.     // если окно сильно перетянуто будет
  56.     if(h == 0)
  57.         h = 1;
  58.     float ratio = 1.0* w / h;
  59.  
  60.     // используем матрицу проекции
  61.     glMatrixMode(GL_PROJECTION);
  62.  
  63.         // Reset матрицы
  64.     glLoadIdentity();
  65.  
  66.     // определяем окно просмотра
  67.     glViewport(0, 0, w, h);
  68.  
  69.     // установить корректную перспективу.
  70.     gluPerspective(45,ratio,1,1000);
  71.  
  72.     // вернуться к модели
  73.     glMatrixMode(GL_MODELVIEW);
  74. }
  75.  
  76. int main(int argc, char **argv)
  77. {
  78.     glutInit(&argc, argv);
  79.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
  80.     glutInitWindowSize(800, 600);
  81.     glutCreateWindow("Physics Engine");
  82.     glEnable(GL_DEPTH_TEST);
  83.     glMatrixMode(GL_PROJECTION);
  84.     glLoadIdentity();
  85.     glMatrixMode(GL_MODELVIEW);
  86.     glLoadIdentity();
  87.     glClearColor(0.1,  0.1, 0.1, 0.1);
  88.  
  89.  
  90.     glutTimerFunc(50, update, 0);
  91.     glutReshapeFunc(reshape);
  92.     glutDisplayFunc(Render);
  93.     glutKeyboardFunc(keyb);
  94.     glutMainLoop();
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement