Top.Mail.Ru
Ответы

Как игры делают переключение между opengl и vulcan например?

Это ж должны быть 2 основные части кода одна которая написана на opengl другая на vulcan, но которые делают абсолютно одинаковые вещи? Это ж много времени займет да и еще надо сделать всё одинаковым

По дате
По рейтингу
Аватар пользователя
Новичок
11мес

Современные компьютеры достаточно мощны для того, чтобы отделить создание 3D-сцены от привязки к особенностям конкретного графического API.

В идеальном, с точки зрения разработчика, варианте основной код игры вообще никак не взаимодействует с графическим API. Он генерирует сцену в виде какого-то универсального промежуточного представления, никак не завязанного на особенности OpenGL или Vulcan. А дальше это представление передаётся в модуль, который транслирует сцену в команды конкретного API. Так что для OpenGL, Vulcan, Direct3D отдельно пишется только модуль-транслятор. Тогда как основная часть кода игры никак не меняется.

Этот вариант, повторю, идеален и в реальной игре особенности конкретных API в основном коде игры всё же могут учитываться. Но даже в этом случае всё, что одинаково, выносится в отдельные модули и никак не дублируется.

Аватар пользователя
Искусственный Интеллект
11мес

Как минимум на самом нижнем уровне это разная работа с API, но в своей основе они занимаются одним и тем же, поэтому промежуточные уровни до непосредственно вызова самого API могут быть схожими.

Аватар пользователя
Просветленный
11мес

Я на пурике пишу. Там если под винду компилишь, подставляется асмовский код под DirectX, а если под линуксом собираешь проект, там просто подставлется код на асме под OpenGL.Если твоя среда компилируемая, то так же, а если интерпретируемая, то навреное на лету просто подменяются библиотеки

Аватар пользователя
Мыслитель
11мес

Игры делают на движка Unity, Unreal Engine или CryEngine, разработчик игр не парится поэтому поводу, т.к. всё за него делает движок.