Создание двумерного OpenGL приложения в C++

Прежде всего нам понадобится установить библиотеку glut — она поможет нам создать окно.
Для установки в ubuntu вам нужно выполнить следующую команду:

sudo apt-get install freeglut freeglut-dev

Теперь библиотека glut и её заголовочные файлы скачаны.
Для установки этой библиотеки в Windows вам понадобится скачать её вручную и скопировать в папку include вашего компилятора.
Приступим к созданию программы:
Включим необходимые заголовочные файлы:

#include <GL/glut.h>
#include <math.h>
#include <iostream>
using namespace std;

Думаю тут объяснять что/зачем излишне.
Приступим к функции main:

int main(int argc, char **argv) {
    glutInit(&argc,argv); ///инициализируем glut
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); ///использовать 1 буфер, и цвет типа RGB (3 составляющие)
    glutInitWindowSize(240,240); ///зададим размер окна 240x240
    glutInitWindowPosition(0,0);  ///позиция открытия окна
    glutCreateWindow("Sin"); ///создать окно с именем "Sin"
    glClearColor(1.0 , 1.0 , 1.0 , 1.0); ///цвет фона окна
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-600.0,600.0,-200.0,200.0,-1.0,1.0); ///зададим размеры координатной сетки
    glutDisplayFunc(display); ///зададим функцию отображающую необходимые объекты
    glutMainLoop();  ///передает управление в glut
    return 0;
}

Теперь перейдём к функции отображения — display. Чтобы немного усложнить и тем самым сделать интереснее задачу, я решил нарисовать в нашем окне синусоиду.

void display() {
    glClear(GL_COLOR_BUFFER_BIT);   ///очистим буфер

    glColor3f(0.0,1.0,0.0); ///зададим цвет которым бедем "рисовать". Я выбрал зелёный.
    glBegin(GL_LINES);   ///начнём рисовать первую координатную ось - OX. Будем это делать при помощи линий
    glVertex2f(-550,0);   ///первая точка оси
    glVertex2f(550,0);   ///вторая точка оси
    glEnd();

    glBegin(GL_LINES);  ////теперь проделаем тоже для оси OY
    glVertex2f(0,150);
    glVertex2f(0,-150);
    glEnd();

    glBegin(GL_LINE_STRIP);   ///начнём рисовать синусоиду при помощи ломаной линии
    glColor3f(1.0,0.0,0.0); ///выберем для неё красный цвет

    for (int i = -500; i <= 500; i++) {
        float y = 100 * sin(i*M_PI/180);    ///вычислим текущую координату Y. Функция Sin() принимает значение в радианах, поэтому i следует умножить на число Пи и разделить на 180. Весь результат умножим на 100, указав тем самым максимальную высоту нашей синусоиды.
        glVertex2d(i,y);
    } 
    glEnd();
    glFlush();
}

Наша программа готова, осталось только её откомпилировать. Т.к. библиотека glut не является стандартной библиотекой C++ делать это следует таким образом:

g++ sin.cpp -o sin -lglut

Выполнив программу вы увидите что-то вроде этого:

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий