«Привет OpenGL»

Во время моего исследовательского периода я много раз сталкивался с OpenGL, когда читал статьи и документы, связанные с AR. К сожалению, у меня не было времени, чтобы на самом деле поиграть с ним. Поэтому я пообещал себе, что мне придется изучить это позже (и я считаю, что сейчас самое время!)

Предварительная установка

переменная env: перейдите к настройкам среды в разделе «Система» на панели управления и добавьте PATH к двоичным файлам.

Cbuild: C создайте затем build lib через VS Studio.

  1. Freeglut (скачать ➡ Cbuild ➡ переменная env)
  2. GLEW (скачиваемая ➡ переменная env)
  3. GLFW3 (скачать➡ Cbuild)

Пакет «#include»

Для разработки на платформе Windows включите как «GLEW», так и «freeglut».

#include <gl/glew.h>
#include <gl/GL.h>
#include <gl/freeglut.h>

«GLFW» будет использоваться для обработки окна и ввода с клавиатуры.

#include <GLFW/glfw3.h>

GLM для математического алгоритма

#include <glm/glm.hpp> 
using namespace glm;

Создание окна

Полное объяснение использования ссылки на окно должно быть отнесено к официальной документации API.

1. Настройте параметр GLFW

glwWindowHint(GLFW_SAMPLES, 4) означает 4-кратное сглаживание.

Версия GLFW — «3.3».

glfwWindowHint(GLFW_SAMPLES, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

2. Создайте окно и нарисуйте простой контент

Создайте «окно»

 window = glfwCreateWindow( 1024, 768, "Tutorial 01", NULL, NULL);
 if( window == NULL ){
  fprintf( stderr, "Failed to open GLFW window.\n" );
  getchar();
  glfwTerminate();
  return -1;
 }
 glfwMakeContextCurrent(window);

Инициализировать GLEW

if (glewInit() != GLEW_OK) {
  fprintf(stderr, "Failed to initialize GLEW\n");
  getchar();
  glfwTerminate();
  return -1;
 }

Установите «окно» для прослушивания клавиатуры

glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);

Войдите в основной цикл и выйдите, когда пользователь нажмет кнопку Esc.

do {
   glClear(GL_COLOR_BUFFER_BIT);
   // STUFF HAPPENS HERE
   glfwSwapBuffers(window);
   glfwPollEvents();
}while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS && glfwWindowShouldClose(window) == 0);
 glfwTerminate();