«Привет OpenGL»
Во время моего исследовательского периода я много раз сталкивался с OpenGL, когда читал статьи и документы, связанные с AR. К сожалению, у меня не было времени, чтобы на самом деле поиграть с ним. Поэтому я пообещал себе, что мне придется изучить это позже (и я считаю, что сейчас самое время!)
Предварительная установка
переменная env: перейдите к настройкам среды в разделе «Система» на панели управления и добавьте PATH к двоичным файлам.
Cbuild: C создайте затем build lib через VS Studio.
- Freeglut (скачать ➡ Cbuild ➡ переменная env)
- GLEW (скачиваемая ➡ переменная env)
- 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();