Anden198

Заготовка OpenGL (glut)

Dec 17th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <windows.h>
  3. #include <glut.h>
  4. #include <glaux.h>
  5.  
  6. void Initialize()
  7. {
  8.     float pos[4] = {3,3,3,1};
  9.     float dir[3] = {-1,-1,-1};
  10.     glMatrixMode( GL_PROJECTION );
  11.     glClearColor(1.0, 0.5, 0.8, 1.0);
  12.     glLoadIdentity();
  13.     glOrtho(-5,5, -5,5, 2,12);
  14.     glMatrixMode( GL_MODELVIEW );
  15.     glEnable(GL_DEPTH_TEST);
  16.     glEnable(GL_COLOR_MATERIAL);
  17.     glEnable(GL_LIGHTING);
  18.     glEnable(GL_LIGHT0);
  19.     glLightfv(GL_LIGHT0, GL_POSITION, pos);
  20.     glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);
  21. }
  22.  
  23. void Draw()
  24. {
  25.     glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  26.     glLoadIdentity();
  27.     glMatrixMode(GL_PROJECTION);
  28.     glMatrixMode(GL_MODELVIEW);
  29.     gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
  30.     /***********************Рисовать вот здесь *******************/
  31.     glFlush();            
  32.     glutSwapBuffers();
  33. }
  34.  
  35. void changeSize(int w, int h) {
  36.     // предотвращение деления на ноль
  37.     if (h == 0)
  38.         h = 1;
  39.     float ratio =  w * 1.0 / h;
  40.     // используем матрицу проекции
  41.     glMatrixMode(GL_PROJECTION);
  42.     // обнуляем матрицу
  43.     glLoadIdentity();
  44.     // установить параметры вьюпорта
  45.     glViewport(0, 0, w, h);
  46.     // установить корректную перспективу
  47.     gluPerspective(45.0f, ratio, 0.1f, 100.0f);
  48.     // вернуться к матрице проекции
  49.     glMatrixMode(GL_MODELVIEW);
  50. }
  51.  
  52. int main(int argc, char **argv)
  53. {
  54.     glutInit(&argc,argv);
  55.     glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
  56.     glutInitWindowSize(500,500);        //Указываем размер окна
  57.     glutInitWindowPosition(100,100);    //Позиция окна
  58.     glutCreateWindow("Пингвин");     //Имя окна
  59.     Initialize();      
  60.     glutReshapeFunc(changeSize);
  61.     glutDisplayFunc(Draw);              //Вызов функции отрисовки
  62.     glutMainLoop();
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment