Руки вперед с OpenGL

Недавно я начал изучать однородные системы координат и их приложения в компьютерном зрении. Изучая различные статьи и сообщения в блогах, я был очарован использованием математики в графике и хотел понять, как это делается на самом деле, как программировать пиксели, чтобы они выглядели так, как в реальном мире, и как это получается. могут сопоставить координаты реального трехмерного мира с этой плоскостью двумерного изображения.

Именно здесь я узнал об использовании OpenGL в компьютерной графике. Первая мысль, которая пришла мне в голову, была «Как мне установить его на свой Linux-компьютер?» Что ж, исходная мысль сама по себе была неправильной. Чтобы получить четкое представление, давайте посмотрим, что на самом деле представляет собой OpenGL.

Что такое OpenGL?

Это спецификация. Это ни библиотека, ни пакет. Это описание того, как что-то должно работать. Это не конкретный код, который можно выполнить. Подобно тому, как C ++ 14 имеет свой собственный набор стандартов, которым следует следовать при его компиляции, OpenGL имеет свой собственный набор стандартов.

Вот почему вы не можете установить OpenGL. Он уже реализован в драйвере графического процессора вашей ОС производителями без каких-либо договоренностей о фактической реализации, поэтому разные драйверы могут выполнять одни и те же функции по-разному.

Как мне тогда его использовать?

Вы можете использовать функции OpenGL с помощью других пакетов и библиотек, таких как GLEW (библиотека OpenGL Extension Wrangler), которая представляет собой кроссплатформенную библиотеку C / C ++, которая помогает запрашивать и загружать расширения OpenGL.

GLEW может загружать любую актуальную функцию OpenGL, которая может вам понадобиться. Его просто нужно включить как файл заголовка, а затем инициализировать с помощью уже существующей функции. При успешной инициализации там будут правильные указатели на функции.

Когда у вас есть доступ к функциям, вам необходимо инициализировать взаимодействие с окном и контекст OpenGL. Вы можете сделать это с помощью следующих двух кроссплатформенных реализаций:

  1. GLUT (OpenGL Utility Toolkit), который является официальным и очень старым способом сделать это.
  2. Более новая библиотека, названная GLFW (Graphics Library Framework). Это то, что я использовал.

Пакеты и библиотеки зависимостей

Установите следующие пакеты и драйверы, чтобы иметь возможность работать с вашей видеокартой:

sudo apt-get install cmake libx11-dev xorg-dev libglu1-mesa-devfreeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev libglfw3-dev libglfw3

Давай запачкаем руки

Теперь, когда у вас есть хорошее представление об OpenGL, а также установлены необходимые библиотеки, давайте напишем простую программу. Сохраните приведенный ниже код в main.cpp.

Теперь давайте создадим Makefile, чтобы упростить выполнение кода, а также упростить связывание библиотек.

Теперь для компиляции и запуска программы введите: make && ./main

Сайёнара.