OpenGL и шейдеры
OpenGL — кроссплатформенный API к GPU. С версии 3.x fixed-function конвейер убран: программист сам пишет шейдеры на GLSL и загружает геометрию в буферы. Окно и ввод OpenGL не создаёт — для этого GLFW или freeglut; расширения — GLEW или загрузчик из GLFW.
OpenGL и шейдеры
Окно и контекст
- Инициализировать GLFW, задать hints (
CORE_PROFILE, версия 3.3). - Создать окно → OpenGL context текущий в потоке.
- Загрузить функции через GLEW (на Windows
OpenGL32.dllдаёт лишь 1.x без loader). - Цикл: события → обновление →
glClear→ отрисовка →swap buffers.
Qt Quick и Widgets могут встраивать OpenGL-виджет — тот же конвейер, другая обвязка (Qt).
Графический конвейер (core profile)
VBO/VAO → Vertex Shader → (tess/geom опционально) → Clipping → Rasterization
→ Fragment Shader → depth/stencil/blend tests → framebuffer
| Этап | Роль |
|---|---|
| Vertex shader | MVP-цепочка, выход gl_Position, varyings (UV, normal) |
| Rasterization | Треугольник → фрагменты, интерполяция varyings |
| Fragment shader | Цвет пикселя: текстуры, освещение (Phong/PBR) |
| Depth test | Z-buffer (17.md) |
| Blend | Альфа-смешивание для прозрачности |
★ VAO хранит привязку атрибутов к VBO; ★ VBO — массив вершин на GPU; ★ EBO — индексы для indexed draw.
Минимальный GLSL (идея)
Vertex (упрощённо):
#version 330 core
layout(location = 0) in vec3 aPos;
uniform mat4 uMVP;
void main() {
gl_Position = uMVP * vec4(aPos, 1.0);
}
Fragment:
#version 330 core
out vec4 FragColor;
void main() {
FragColor = vec4(1.0, 0.4, 0.2, 1.0);
}
Шейдеры компилируют отдельно, линкуют в program; uniform-переменные передают матрицы и текстуры.
Текстуры, stencil, типовые эффекты
- 2D-текстура + UV из vertex shader → sample в fragment shader.
- Cubemap — окружение для IBL и skybox.
- Stencil buffer — маска для отражений «в зеркале» (нарисовать зеркало в stencil, затем сцену только где stencil = 1).
- Shadow mapping — рендер глубины с точки зрения света, сравнение в основном проходе.
- Normal / bump mapping — сдвиг нормали по карте высот/нормалей без добавления геометрии.
- PBR — metallic/roughness + Cook–Torrance в fragment shader (13.md).
В Blender те же приёмы — ноды и Eevee/Cycles (131.md).
От OpenGL к индустрии
| API | Платформы | Заметка |
|---|---|---|
| OpenGL / GLES | Кросс, macOS legacy, WebGL | Учебный стандарт |
| Direct3D 12 | Windows, Xbox | Игры Microsoft |
| Vulkan | Кросс, Android | Явная память и sync (29.md) |
| Metal | Apple | iOS/macOS native |
| WebGPU | Браузер | Преемник WebGL |
Принципы шейдеров, MVP, depth и PBR переносятся между API; меняются синтаксис и ритуал инициализации.
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Компьютерная графика — дисциплина, занимающаяся созданием, обработкой, анализом и визуализацией изображений с использованием вычислительных средств. Растровая графика - изображение как сетка пикселей, разрешение, цвет и компромиссы качества и объёма данных. Векторная графика — это способ представления изображений, при котором визуальное содержимое описывается не как набор цветных точек (пикселей), а как совокупность геометрических примитивов: точек. Трёхмерная графика — это область вычислительной техники, посвящённая созданию, обработке и отображению визуальных объектов, обладающих глубиной, объёмом и пространственной структурой. Blender — установка, настройка, обзор разделов официального руководства и основные рабочие процессы 3D. Цифровая графика существует в двух основных формах: растровой и векторной. Растровые изображения состоят из сетки пикселей, каждый из которых имеет свой цвет. Пересечения, hit-test и отсечение примитивов по окну — алгоритмы, которые связывают векторную геометрию с пиксельным выводом и UI. AABB, OBB, BVH и деревья пространственного разбиения — как ускорить поиск пересечений луча, коллизий и видимости в больших сценах. Как 3D-сцена превращается в картинку без «сквозных» полигонов — culling, z-buffer, алгоритм художника, порталы и PVS. Сжатая шпаргалка по разделу "Компьютерная графика" — растр, вектор, 3D, рендер и куда читать дальше. Вопросы по разделу "Компьютерная графика" с подсказкой, в какой статье искать ответ.Основы компьютерной графики
Растровая графика
Векторная графика
D-графика и анимация
Blender
Алгоритмы растеризации
D-геометрия и отсечение
Пространственные структуры и ускорение
Видимость и буфер глубины
Итоги
Чек-лист самопроверки