Direct3D 11 への OpenGL ES 2.0 のマッピングMap OpenGL ES 2.0 to Direct3D 11

OpenGL ES 2.0 から Direct3D へのグラフィックス アーキテクチャの移植プロセスを初めて開始する場合は、API 間の主要な違いについて把握しておいてください。When starting the process of porting your graphics architecture from OpenGL ES 2.0 to Direct3D for the first time, familiarize yourself with the key differences between the APIs. このセクションのトピックは、グラフィックスの処理を Direct3D に移行する際に必ず必要な API の変更と移植戦略を計画するのに役立ちます。The topics in this section help you plan your port strategy and the API changes that you must make when moving your graphics processing to Direct3D.

トピックTopic 説明Description

Direct3D に OpenGL ES 2.0 から、ポートを計画します。Plan your port from OpenGL ES 2.0 to Direct3D

iOS または Android プラットフォームからゲームを移植している場合、OpenGL ES 2.0 に多大な投資を行ってこられたものと思われます。If you are porting a game from the iOS or Android platforms, you have probably made a significant investment in OpenGL ES 2.0. グラフィックス パイプラインのコードベースを Direct3D 11 と Windows ランタイムに移す準備をしているときは、開始する前に何点か注意してください。When preparing to move your graphics pipeline codebase to Direct3D 11 and the Windows Runtime, there are a few things you should consider before you start.

DXGI、Direct3D を EGL コードと比較します。Compare EGL code to DXGI and Direct3D

DirectX Graphics Interface (DXGI) といくつかの Direct3D API は EGL と同じ役割を果たします。The DirectX Graphics Interface (DXGI) and several Direct3D APIs serve the same role as EGL. このトピックは EGL の観点から DXGI と Direct3D 11 を理解するのに役立ちます。This topic helps you understand DXGI and Direct3D 11 from the perspective of EGL.

OpenGL ES 2.0 バッファーや制服、Direct3D に頂点属性を比較します。Compare OpenGL ES 2.0 buffers, uniforms, and vertex attributes to Direct3D

OpenGL ES 2.0 から Direct3D 11 に移植するプロセスでは、アプリとシェーダー プログラムの間でデータを受け渡すための構文と API の動作を変更する必要があります。During the process of porting to Direct3D 11 from OpenGL ES 2.0, you must change the syntax and API behavior for passing data between the app and the shader programs.

Direct3D に OpenGL ES 2.0 シェーダー パイプラインを比較します。Compare the OpenGL ES 2.0 shader pipeline to Direct3D

概念的には、Direct3D 11 のシェーダー パイプラインは OpenGL ES 2.0 のそれとよく似ています。Conceptually, the Direct3D 11 shader pipeline is very similar to the one in OpenGL ES 2.0. ただし、API の設計という点では、シェーダー ステージを作成、管理するための主要コンポーネントは、ID3D11Device1ID3D11DeviceContext1 という 2 つのプライマリ インターフェイスに含まれています。In terms of API design, however, the major components for creating and managing the shader stages are parts of two primary interfaces, ID3D11Device1 and ID3D11DeviceContext1. このトピックでは、OpenGL ES 2.0 の一般的なシェーダー パイプライン API パターンが、Direct3D 11 におけるこれらのインターフェイスの何に対応するかを説明します。This topic attempts to map common OpenGL ES 2.0 shader pipeline API patterns to the Direct3D 11 equivalents in these interfaces.

 

特定の OpenGL ES 2.0 プロバイダーに関する注意事項Notes on specific OpenGL ES 2.0 providers

これらのトピックでは、Khronos OpenGL ES 2.0 仕様とプラットフォームにとらわれない C を使います。iOS と Android はいずれも同じ仕様を使い、これらのプラットフォーム向けに作成された OpenGL ES 2.0 コードは、ここで解説するコード スニペットに非常によく似ています。ただし、これらは通常、オブジェクト指向の API として公開されます。These topics use the Khronos OpenGL ES 2.0 specification with platform-agnostic C. Both iOS and Android utilize the same specification and OpenGL ES 2.0 code developed for those platforms is very similar to the code snippets we will walk through, although they are typically exposed as object-oriented APIs. また、各プラットフォームの複雑さと言語の違いが原因で、特にメソッドのパラメーターの型や、一般的な言語構文に若干の相違がある場合があります。Also, due to the intricacies and language differences of each platform, there may be minor differences, especially in method parameter types, or in general language syntax. たとえば iOS は、Objective-C を使います。iOS, for instance, uses Objective-C. Android は C++ を使うことができますが、開発者は純粋な Java の実装に依存している場合があります。Android has the capability to use C++; however, some developers may have relied on a pure Java implementation. この点を考慮しても、これらのトピックは全体的な概念としては有益であり、OpenGL ES API の構造と用途は異なりません。With that in mind, these topics should still be useful as the overall concepts, structure and usage of the OpenGL ES APIs do not differ.