Zuordnen von OpenGL ES 2.0 zu Direct3D 11
Machen Sie sich beim ersten Starten des Portierens der Grafikarchitektur von OpenGL ES 2.0 zu Direct3D mit den wichtigsten Unterschieden zwischen den APIs vertraut. In den Themen in diesem Abschnitt können Sie Ihre Portstrategie und die API-Änderungen planen, die Sie beim Verschieben der Grafikverarbeitung in Direct3D vornehmen müssen.
Thema | Beschreibung |
---|---|
Wenn Sie ein Spiel von den iOS- oder Android-Plattformen portieren, haben Sie wahrscheinlich eine erhebliche Investition in OpenGL ES 2.0 getätigt. Bei der Vorbereitung der Umstellung Ihrer Grafikpipeline auf Direct3D 11 und die Windows Runtime sollten Sie einige Dinge beachten, bevor Sie beginnen. |
|
Die DirectX Graphics Interface (DXGI) und mehrere Direct3D-APIs dienen der gleichen Rolle wie EGL. Dieses Thema hilft Ihnen, DXGI und Direct3D 11 aus sicht der EGL zu verstehen. |
|
Vergleichen von OpenGL ES 2.0-Puffern, Uniforms und Vertexattributen mit Direct3D |
Während des Portierens von OpenGL ES 2.0 zu Direct3D 11 müssen Sie die Syntax und das API-Verhalten ändern, um Daten zwischen der App und den Shaderprogrammen zu übergeben. |
Konzeptionell ähnelt die Direct3D 11-Shaderpipeline dem in OpenGL ES 2.0. Im Hinblick auf das API-Design sind jedoch die hauptkomponenten zum Erstellen und Verwalten der Shaderphasen Teile von zwei primären Schnittstellen, ID3D11Device1 und ID3D11DeviceContext1. In diesem Thema wird versucht, allgemeine OpenGL ES 2.0-Shaderpipeline-API-Muster den Direct3D 11-Entsprechungen in diesen Schnittstellen zuzuordnen. |
Hinweise zu bestimmten OpenGL ES 2.0-Anbietern
Diese Themen verwenden die Khronos OpenGL ES 2.0-Spezifikation mit plattformagnostischen C. Sowohl iOS als auch Android verwenden die gleiche Spezifikation und OpenGL ES 2.0-Code, der für diese Plattformen entwickelt wurde, ähnelt sehr den Codeausschnitten, die wir durchlaufen werden, obwohl sie in der Regel als objektorientierte APIs verfügbar gemacht werden. Aufgrund der Ungenauigkeiten und Sprachunterschiede jeder Plattform kann es auch geringfügige Unterschiede geben, insbesondere bei Methodenparametertypen oder in der allgemeinen Sprachsyntax. iOS verwendet z. B. Objective-C. Android bietet die Möglichkeit, C++ zu verwenden; Einige Entwickler haben sich jedoch möglicherweise auf eine reine Java-Implementierung verlassen. Daher sollten diese Themen weiterhin nützlich sein, da sich die allgemeinen Konzepte, Struktur und Verwendung der OpenGL ES-APIs nicht unterscheiden.