Сопоставление OpenGL ES 2.0 с Direct3D 11

При первом запуске процесса переноса графической архитектуры из OpenGL ES 2.0 в Direct3D ознакомьтесь с ключевыми различиями между API. Разделы этого раздела помогут спланировать стратегию порта и изменения API, которые необходимо внести при перемещении графической обработки в Direct3D.

Раздел Описание

Планирование порта из OpenGL ES 2.0 в Direct3D

Если вы переносите игру с платформ iOS или Android, вероятно, вы внесли значительные инвестиции в OpenGL ES 2.0. При подготовке к перемещению базы кода графического конвейера в Direct3D 11 и среда выполнения Windows необходимо учитывать несколько действий перед началом работы.

Сравнение кода EGL с DXGI и Direct3D

Графический интерфейс DirectX (DXGI) и несколько API Direct3D служат той же ролью, что и EGL. Этот раздел поможет вам понять DXGI и Direct3D 11 с точки зрения EGL.

Сравнение буферов OpenGL ES 2.0, униформ и атрибутов вершины с Direct3D

Во время переноса в Direct3D 11 из OpenGL ES 2.0 необходимо изменить синтаксис и поведение API для передачи данных между приложением и программами шейдера.

Сравнение конвейера шейдера OpenGL ES 2.0 с Direct3D

Концептуально конвейер шейдера Direct3D 11 очень похож на конвейер шейдера OpenGL ES 2.0. Однако с точки зрения проектирования API основные компоненты для создания этапов шейдера и управления ими являются частями двух основных интерфейсов, ID3D11Device1 и ID3D11DeviceContext1. В этом разделе рассматривается сопоставление распространенных шаблонов API конвейера шейдера OpenGL ES 2.0 с эквивалентами Direct3D 11 в этих интерфейсах.

 

Заметки о конкретных поставщиках OpenGL ES 2.0

В этих разделах используется спецификация Khronos OpenGL ES 2.0 с платформой, не зависящая от платформы C. Как iOS, так и Android используют ту же спецификацию и код OpenGL ES 2.0, разработанный для этих платформ, очень похож на фрагменты кода, которые мы рассмотрим, хотя они обычно предоставляются как объектно ориентированные API. Кроме того, из-за встроенных и языковых различий каждой платформы могут быть незначительные различия, особенно в типах параметров метода или в общем синтаксисе языка. Например, iOS использует Objective-C. Android имеет возможность использовать C++; однако некоторые разработчики могли полагаться на чистую реализацию Java. Учитывая это, эти разделы по-прежнему должны быть полезны, так как общие понятия, структура и использование API OpenGL ES не отличаются.