Asignar OpenGL ES 2.0 a Direct3D 11
Al iniciar el proceso de portabilidad de la arquitectura de gráficos de OpenGL ES 2.0 a Direct3D por primera vez, familiarícese con las principales diferencias entre las API. Los temas de esta sección le ayudarán a planear la estrategia de puerto y los cambios de API que debe realizar al mover el procesamiento de gráficos a Direct3D.
Tema | Descripción |
---|---|
Si va a hacer la portabilidad de un juego desde las plataformas iOS o Android, probablemente haya realizado una inversión significativa en OpenGL ES 2.0. Al preparar la portabilidad del código base de canalización de gráficos a Direct3D 11 y Windows Runtime, hay algunas cosas que debe tener en cuenta antes de empezar. |
|
La interfaz de gráficos de DirectX (DXGI) y varias API de Direct3D tienen el mismo rol que EGL. Este tema le ayuda a comprender DXGI y Direct3D 11 desde la perspectiva de EGL. |
|
Comparar búferes, uniformes y atributos de vértices de OpenGL ES 2.0 con Direct3D |
Durante el proceso de migración a Direct3D 11 desde OpenGL ES 2.0, debe cambiar la sintaxis y el comportamiento de la API para pasar datos entre la aplicación y los programas de sombreador. |
Comparación de la canalización de sombreador openGL ES 2.0 con Direct3D |
Conceptualmente, la canalización de sombreador de Direct3D 11 es muy similar a la de OpenGL ES 2.0. Sin embargo, en términos de diseño de API, los componentes principales para crear y administrar las fases del sombreador son partes de dos interfaces principales, ID3D11Device1 y ID3D11DeviceContext1. En este tema se intentan asignar patrones comunes de api de canalización de sombreador de OpenGL ES 2.0 a los equivalentes de Direct3D 11 en estas interfaces. |
Estos temas usan la especificación Khronos OpenGL ES 2.0 con C independiente de la plataforma. Tanto iOS como Android usan la misma especificación y el código openGL ES 2.0 desarrollado para esas plataformas es muy similar a los fragmentos de código que recorreremos, aunque normalmente se exponen como API orientadas a objetos. Además, debido a las complejidades y las diferencias de idioma de cada plataforma, puede haber pequeñas diferencias, especialmente en los tipos de parámetros de método o en la sintaxis general del lenguaje. Por ejemplo, iOS usa Objective-C. Android tiene la capacidad de usar C++; Sin embargo, algunos desarrolladores pueden haber confiado en una implementación pura de Java. Teniendo esto en cuenta, estos temas deben seguir siendo útiles, ya que los conceptos generales, la estructura y el uso de las API de OpenGL ES no difieren.