Eseguire il mapping di OpenGL ES 2.0 a Direct3D 11

Quando si avvia il processo di conversione dell'architettura grafica da OpenGL ES 2.0 a Direct3D per la prima volta, acquisire familiarità con le differenze principali tra le API. Gli argomenti di questa sezione consentono di pianificare la strategia delle porte e le modifiche all'API che è necessario apportare quando si sposta l'elaborazione grafica in Direct3D.

Argomento Descrizione

Pianificare la conversione da OpenGL ES 2.0 a Direct3D

Se si sta eseguendo la conversione di un gioco dalle piattaforme iOS o Android, probabilmente si è anche fatto un significativo investimento in OpenGL ES 2.0. Quando si prepara lo spostamento del codebase della pipeline grafica in Direct3D 11 e Windows Runtime, è necessario prendere in considerazione alcuni aspetti prima di iniziare.

Confrontare il codice EGL con DXGI e Direct3D

DirectX Graphics Interface (DXGI) e diverse API Direct3D svolgono lo stesso ruolo di EGL. Questo argomento consente di comprendere DXGI e Direct3D 11 dal punto di vista di EGL.

Confrontare buffer, uniformi e attributi dei vertici OpenGL ES 2.0 con Direct3D

Durante il processo di conversione in Direct3D 11 da OpenGL ES 2.0, è necessario modificare la sintassi e il comportamento dell'API per passare i dati tra l'app e i programmi shader.

Confrontare la pipeline di shader OpenGL ES 2.0 con Direct3D

Concettualmente, la pipeline dello shader Direct3D 11 è molto simile a quella di OpenGL ES 2.0. In termini di progettazione API, tuttavia, i componenti principali per la creazione e la gestione delle fasi dello shader sono parti di due interfacce principali, ID3D11Device1 e ID3D11DeviceContext1. Questo argomento tenta di eseguire il mapping dei modelli API della pipeline di shader OpenGL ES 2.0 comuni agli equivalenti Direct3D 11 in queste interfacce.

 

Note su specifici provider OpenGL ES 2.0

Questi argomenti usano la specifica Khronos OpenGL ES 2.0 con C indipendente dalla piattaforma. Sia iOS che Android usano la stessa specifica e il codice OpenGL ES 2.0 sviluppato per tali piattaforme è molto simile ai frammenti di codice che verranno sottoposti a procedura dettagliata, anche se in genere vengono esposti come API orientate agli oggetti. Inoltre, a causa delle complessità e delle differenze di linguaggio di ogni piattaforma, possono verificarsi differenze minime, soprattutto nei tipi di parametri del metodo o nella sintassi generale del linguaggio. iOS, ad esempio, usa Objective-C. Android ha la possibilità di usare C++; Tuttavia, alcuni sviluppatori potrebbero aver fatto affidamento su un'implementazione Java pura. Tenendo presente questo aspetto, questi argomenti devono essere comunque utili come i concetti generali, la struttura e l'utilizzo delle API OpenGL ES non differiscono.