Игровой движок : Графика
Мы видим изображение на экране, его подготавливает специальное устройство - графический процессор (GPU). Бывают случаи, когда графику просчитывает CPU (центральный процессор) - это называется Software Render, но такой вариант используется редко.
Именно через API программист общается с GPU. Существуют разные API, которые можно использовать. На текущий момент это:
- OpenGL и его урезанная мобильная версия OpenGL ES, работает на разных платформах
- DirectX - это графический API созданный для Windows
- Metal - созданный и продвигаемый Apple для своих ОС, работает только на iOS и OSX
- Vulkan - созданный Khronos Group как новый API, работает не на всех платформах
Если игра должна работать на нескольких платформах, то необходимо поддерживать несколько графических API. Это увеличивает трудозатраты на разработку движка. К примеру Apple решила отказаться от OpenGL в пользу своей разработки Metal и чтобы игра также работали как и раньше на этой платформе - необходимо использовать Metal. Есть еще вариант, которые используют некоторые компании. На примере игры Cup Head - игра разработана с использованием DirectX, а поддержка других платформ Linux\OSX поддерживается через Wine.
Не в один графический API не заложены функции для отрисовки текста, спрайтов, кнопок и других элементов. Все что есть в наличии у нас - это 3 примитива: треугольник, линия и точка. Основной это конечно же треугольник. Вся графика, которая отрисовывается в игре - она вся состоит из треугольников. Есть некоторые варианты использования точек и линий, это к примеру системы частиц. Как пример следующая картинка.
Каждый треугольник оперирует с координатами XYZ, но если игра 2D - то координата Z обычно 0 и не передается, а все решает порядок отрисовки элементов.
Чтобы не разбираться конкретно с API, можно использовать различные библиотеки, которые абстрагируют от прямых вызовов API. К ним можно отнести: SDL, GLFW, SFML и другие. Можно будет скачать любую из них и попробовать в действии, в интернете достаточно различных уроков и примеров.
В следующих статьях мы рассмотрим сеть и звук, а далее рассмотрим конкретные примеры решения проблем в играх.