C++ дайджест #14: Graphics API — OpenGL, DirectX, Vulkan, Metal
У випуску: C++ Attributes, реліз boost 1.70.0 та Clang 8.0.0, VS2019 preview 1, алгоритми Boost.
Привіт, мої любі сішники! Пропоную в цьому дайджесті розглянути графічні API. Почнімо? :)
OpenGL
OpenGL — кроссплатформне API для роботи з графікою. Існує два ключові варіанти OpenGL:
- Immediate mode (fixed function pipeline) — старіший. Матеріали для вивчення: OpenGL 2 Tutorials, The Official Guide to Learning OpenGL, Version 1.1.
- Core-profile — актуальний «modern OpenGL». Сам modern почався ще з версії 2.1 у 2004 році.
Матеріали для вивчення modern OpenGL:
Learn OpenGL — найкращий туторіал, щоб швидко опанувати OpenGL. Пояснюються як основи, так і ширші можливості та особливості робити. Є детальна теорія кодом.
OGL dev — непоганий туторіал з кодом.
OpenGL Programming — розглянуто основи роботи та приклади як для modern OpenGL, так і для fixed pipeline OpenGL.
Відео від Jamie King.
GameDev.ru->OpenGL — можна знайти різнопланові статті.
Книги:
- OpenGL Programming Guide: The Official Guide to Learning OpenGL;
- OpenGL Development Cookbook;
- OpenGL 4.0 Shading Language Cookbook;
- OpenGL Data Visualization Cookbook;
- OpenGL Superbible.
При роботі з OpenGL використовуються різноманітні бібліотеки-помічники, що доповнюють відсутню функціональність: спрощують математичні розрахунки (GLM), надають контекст (можно дуже грубо сказати, що це контрол для малювання; GLUT, SDL, GLFW, SFML, Qt).
Про різницю між fixed pipeline OpenGL та modern OpenGL, вирішальні етапи розвитку можно переглянути статтю на codeproject.
Для embedded та мобільних систем використовується урізана версія OpenGL ES (про версії: OpenGL ES API Versions at a Glance).
Матеріали для вивчення:
- OpenGL ES 2.0 SDK for Android — туторіал для Android;
- All about OpenGL ES 2.x — серія з трьох статей, що здебільшого показує, як програмувати для iPhone;
- Calling OpenGL from C on Android, Using the NDK та Calling OpenGL from C on iOS, Sharing Common Code with Android.
Книги з OpenGL ES:
- OpenGL ES 3.0 Programming Guide;
- OpenGL ES 3.0 Cookbook;
- Learn OpenGL ES For Mobile Game and Graphics Development.
DirectX
Це API від Microsoft для OS Windows, побудований навколо COM, який дозволяє створювати ігри та інші аплікації. DirectX розбитий на компоненти. При роботі з тривимірною графікою нас, перш за все, буде цікавити Direct3D.
Матеріали для вивчення:
Introduction to 3D Game Programming with DirectX 12.
Vulkan
Відносно новий кроссплатформний API, створений Khronos group. Аналогічно OpenGL, Vulkan не вміє створювати вікна аплікацій та не має можливостей роботи з лінійною алгеброю. Як і у випадку з OpenGL, тут нам на допомогу приходять GLM, SDL, GLFW та інші.
Для вивчення Vulkan є чудовий офіційний Vulkan Tutorial та:
- Vulkan API (glNext) от Khronos Group — коротенька стаття, яка розглядає, що таке Vulkan;
- приклади коду від NVidia;
- Introduction To Vulkan на OGLDev;
- відеопрезентації: Introduction to SPIR-V Shaders & Using SPIR-V in practice with SPIRV-Cross Part 1, Introduction to SPIR-V Shaders & Using SPIR-V in practice with SPIRV-Cross Part 2.
Книги:
Metal
В 2018 Apple оголосила OpenGL, який вже давненько підсижував Metal, як Deprecated.
mtlpp — C++ wrapper around Metal — приклад обгортки Metal — C++.
Основы программирования графики на Apple Metal: Начало
На десерт — книга, яка дуже гарно пояснює необхідну математику 3D-світу: Mathematics for 3D Game Programming and Computer Graphics.
Інструменти
Introduction into C++ builds with Gradle
Conan 1.12: Editable packages, Composable profiles, Command improvements & New architectures
An Introduction to the Qt Installer Framework
Modern C++
Корисні посилання
The BooSTL Algorithms: Boost Algorithms That Extend the STL (1/3)
The BooSTL Algorithms: Boost Algorithms That Extend the STL (2/3)
The BooSTL Algorithms: Boost Algorithms That Extend the STL (3/3)
20 ABI (Application Binary Interface) breaking changes every C++ developer should know
Оновлення
Цього місяця маємо такі оновлення:
- Qt: Qt 5.13.0 Beta1, Qt 5.12.2, Qt Creator 4.9 RC, Qt Design Studio 1.1.1, Qt 3D Studio 2.3, Announcing QtLottie;
- Visual Studio 2019 version 16.1 Preview 1;
- boost 1.70.0;
- Clang 8.0.0;
- GCC 8.3 (Feb 22);
- Conan 1.14;
- jemalloc 5.2.0.
Конференції С++ в Україні:
Tech. talk: «Modern C++: Universal (forwarding) references» — 17 квітня, Дніпро.C++ LoGeek Night — 18 квітня, Одесса.
Globallogic Kyiv C/C++ Career Day — 20 квітня, Київ.
Вебинар «Статические и динамические библиотеки в С++» — 14 травня, онлайн.
Games Gathering 2019 Kiev —
Для новачків
Хвилиночка флуду
← Попередній випуск: C++ дайджест #13