28

OpenVGOpenGL|ES in Goの実装を書いています。どちらもKhronos EGL APIに依存しており、おそらく移植性を容易にするためだと思います。

楽しみと教育上の理由から、OpenGL ES の上に OpenVG の実装を書いています。レンダリング作業はあまり行っていないので、オープン API についてもっと学び、明確に定義された標準 (より簡単に) を実装する練習をしたいと思います。正しい結果が得られたかどうかを確認してください)。

私が理解しているように、EGL は、OS が提供する複数の API (GLX、WGL など) のいずれかを使用する代わりに、描画コンテキスト (またはそれが正しく呼ばれるもの) を取得するための標準 API を提供します。

ここに画像の説明を入力

Khronosがそのような努力をして、標準のOpenGLをループから外すとは信じがたいですが、問題は、OpenGL(実際の取引)がEGLとどのように、またはそうであるか、またはそれがOpenGL ESのみであるかどうかを見つけていないということです。OpenGL ES が EGL の描画コンテキストを使用できる場合、標準の OpenGL も機能しますか?

私はこれらすべてに本当に慣れていないので興奮していますが、実際に行っているプロジェクトは、描画操作に OpenVG を利用し、可能な限りハードウェア アクセラレーションを使用する Go ウィジェット ツールキットです。

OpenVG、OpenGL、OpenGL ES が EGL に依存している場合、私の質問には「はい」か「いいえ」で答えられると思います。昨夜、私がこの話題に頭から飛び込んだことを覚えておいてください.

OpenGL は EGL を使用または依存していますか?


トピックから外れましたが、EGL タグはありません。あるべきですか?

4

3 に答える 3

16

;EGL_OPENGL_APIを介して、スレッドの現在の API としてバインドできます。eglBindAPI(EGLenum api)後続の eglCreateContext は、OpenGL レンダリング コンテキストを作成します。

EGL仕様、p42から:

このセクションで説明する関数の一部は、呼び出しによってスレッドごとに設定される現在のレンダリング API を利用します。

EGLBoolean eglBindAPI(EGLenum api);

api は、サポートされているクライアント API のいずれか (EGL_OPENGL_API、EGL_OPENGL_ES_API、または EGL_OPENVG_API) を指定する必要があります

注意点として、EGL 実装はサポートされていない権利の範囲内であり、バインドしようとするとエラーがEGL_OPENGL_API生成されます。EGL_BAD_PARAMETER

AGL/WGL/GLX クラフトを取り上げずに libGL にリンクすることも困難です。これらのプラットフォームの ABI では、libGL がこれらのエントリ ポイントを提供する必要があります。プレイしているプラ​​ットフォームによっては、これが問題になる場合とそうでない場合があります。

于 2012-04-17T07:32:39.413 に答える
12

OpenGL は EGL を使用または依存していますか?

いいえ。EGL なしで OpenGL を実行できます。

ただし、デスクトップ OpenGL コンテキストを作成できる EGL 実装を持つことは可能です。これは、EGL の eglBindAPI(int api) が EGL_OPENGL_API、EGL_OPENGL_ES_API、または EGL_OPENVG_API を許可するためです。

しかし、あなたが尋ねるならば:

OpenGL-ES は EGL を使用または依存していますか?

答えはイエスですが、例外があります。

現在 (2015 年)、 EGLに依存してグラフィックス コンテキストを作成する OpenGL-ES の実装がいくつかあります: Google ANGLE、PowerVR、ARM MALI、Adreno、AMD、Mesa など。

ただし、最近のNVIDIAおよび Intel ドライバーのリリースでは、OpenGL-ES コンテキストを直接要求することもできます。この場合、拡張機能WGL_EXT_create_context_es_profileおよびWGL_EXT_create_context_es2_profileが利用可能です (Windows)。GLX_EXT_create_context_es_profileおよびGLX_EXT_create_context_es2_profile拡張機能が利用可能なUnix プラットフォームでも同じです。

EGL の目的は、WGL、GLX などのプラットフォーム固有の問題を心配することなく、サポートされているグラフィックス API のコンテキストを初期化して取得する移植可能な標準的な方法を作成することで、開発者の負担を軽減することです。これは EGL 実装者の問題ではなく、EGL 実装者の問題です。最終プログラマ。

于 2015-09-25T18:33:10.710 に答える
8

OpenGL と EGL の間には何の関係もありません。通常、EGL はデスクトップでは実行されず、EGL を介してデスクトップ OpenGL コンテキストを作成する機能はありません。

OpenGL コンテキストは、代わりにプラットフォーム固有の API によって作成および管理されます。Windows では、WGL API が使用されます。X11 ベースのプラットフォームでは、GLX が使用されます。などなど。

昨年、デスクトップ上で動作し、OpenGL コンテキストを作成できるバージョンの EGL を作成することについて、Khronos から騒ぎがありましたが、これまでのところ、何も起こりませんでした。

于 2011-08-10T20:40:02.607 に答える