Игровой движок : Графика

Есть основных 3 вида графики в играх: 2D - в одной плоскости, 2.5D - изометрическая графика и 3D - объемная графика в пространстве. Есть еще другие варианты, но основных их 3.
Есть основных 3 вида графики в играх: 2D - в одной плоскости, 2.5D - изометрическая графика и 3D - объемная графика в пространстве. Есть еще другие варианты, но основных их 3.

Мы видим изображение на экране, его подготавливает специальное устройство - графический процессор (GPU). Бывают случаи, когда графику просчитывает CPU (центральный процессор) - это называется Software Render, но такой вариант используется редко.

GPU - графический чип (видеокарта), Driver - драйвер конкретного чипа, Graphic API - графическое API
GPU - графический чип (видеокарта), Driver - драйвер конкретного чипа, Graphic API - графическое API

Именно через 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 и другие. Можно будет скачать любую из них и попробовать в действии, в интернете достаточно различных уроков и примеров.

В следующих статьях мы рассмотрим сеть и звук, а далее рассмотрим конкретные примеры решения проблем в играх.

24
12 комментариев