Compartilhar via


Mapear o OpenGL ES 2.0 para o Direct3D 11

Ao iniciar o processo de portabilidade da arquitetura gráfica do OpenGL ES 2.0 para o Direct3D pela primeira vez, familiarize-se com as principais diferenças entre as APIs. Os tópicos nesta seção ajudam você a planejar sua estratégia de portabilidade e as alterações de API que você deve fazer ao mover seu processamento gráfico para o Direct3D.

Tópico Descrição

Planejar sua portabilidade do OpenGL ES 2.0 para o Direct3D

Se você está fazendo a portabilidade de um jogo das plataformas iOS ou Android, você provavelmente fez um investimento significativo no OpenGL ES 2.0. Ao se preparar para mover sua base de código de pipeline de elementos gráficos para o Direct3D 11 e o Windows Runtime, há algumas coisas que você deve considerar antes de começar.

Comparar o código EGL com DXGI e Direct3D

A DXGI (Interface Gráfica do DirectX) e várias APIs do Direct3D desempenham a mesma função que o EGL. Este tópico ajuda você a entender o DXGI e o Direct3D 11 da perspectiva do EGL.

Comparar buffers, uniformes e atributos de vértice do OpenGL ES 2.0 com o Direct3D

Durante o processo de portabilidade para o Direct3D 11 do OpenGL ES 2.0, você deve alterar a sintaxe e o comportamento da API para passar dados entre o aplicativo e os programas de sombreador.

Comparar o pipeline do sombreador do OpenGL ES 2.0 com o Direct3D

Conceitualmente, o pipeline do sombreador Direct3D 11 é muito semelhante ao do OpenGL ES 2.0. Em termos de design de API, no entanto, os principais componentes para criar e gerenciar os estágios do sombreador são partes de duas interfaces primárias, ID3D11Device1 e ID3D11DeviceContext1. Este tópico tenta mapear padrões comuns de API de pipeline de sombreador do OpenGL ES 2.0 para os equivalentes do Direct3D 11 nessas interfaces.

 

Notas sobre provedores específicos do OpenGL ES 2.0

Esses tópicos usam a especificação Khronos OpenGL ES 2.0 com C independente de plataforma. Tanto o iOS quanto o Android utilizam a mesma especificação e o código OpenGL ES 2.0 desenvolvido para essas plataformas é muito semelhante aos trechos de código que abordaremos, embora eles sejam normalmente expostos como APIs orientadas a objetos. Além disso, devido às complexidades e diferenças de linguagem de cada plataforma, pode haver pequenas diferenças, especialmente nos tipos de parâmetros de método ou na sintaxe geral da linguagem. O iOS, por exemplo, usa Objective-C. O Android tem a capacidade de usar C++; no entanto, alguns desenvolvedores podem ter confiado em uma implementação Java pura. Com isso em mente, esses tópicos ainda devem ser úteis, pois os conceitos gerais, a estrutura e o uso das APIs do OpenGL ES não diferem.