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 (про версії: API OpenGL ES 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 — 7-8 грудня, Київ.
Для новачків
Хвилиночка флуду
? Попередній випуск: C++ дайджест #13
Опубліковано: 13/04/19 @ 10:00
Розділ Різне
Рекомендуємо:
Проектування retry обгортки для функцій на Swift
Сутичка двох екодзун: ITIL vs PMBoK
DOU Hobby: Стрільба – любов до зброї і ураження цілі
DOU Labs: як в Provectus створили ProPlanner – SMART-планувальник робочих завдань
Три історії про IT-шників, що займаються громадською діяльністю