Сопоставление OpenGL ES 2.0 с Direct3D 11
При первом запуске процесса переноса графической архитектуры из OpenGL ES 2.0 в Direct3D ознакомьтесь с ключевыми различиями между API. Разделы этого раздела помогут спланировать стратегию порта и изменения API, которые необходимо внести при перемещении графической обработки в Direct3D.
Раздел | Описание |
---|---|
Если вы переносите игру с платформ iOS или Android, вероятно, вы внесли значительные инвестиции в OpenGL ES 2.0. При подготовке к перемещению базы кода графического конвейера в Direct3D 11 и среда выполнения Windows необходимо учитывать несколько действий перед началом работы. |
|
Графический интерфейс DirectX (DXGI) и несколько API Direct3D служат той же ролью, что и EGL. Этот раздел поможет вам понять DXGI и Direct3D 11 с точки зрения EGL. |
|
Сравнение буферов OpenGL ES 2.0, униформ и атрибутов вершины с Direct3D |
Во время переноса в Direct3D 11 из OpenGL ES 2.0 необходимо изменить синтаксис и поведение API для передачи данных между приложением и программами шейдера. |
Концептуально конвейер шейдера 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 не отличаются.