1

eglCreateWindowSurfaceEGL は、ネイティブ バッキング ストアを使用して EGL サーフェスを作成する 2 つの方法を提供します egCreatePixmapSurface。どちらも、ネイティブ グラフィックス レイヤーと対話する EGL サーフェスを作成します。(ネイティブ グラフィックス レイヤーと相互作用しない pbuffer サーフェスとは対照的です。)

ウィンドウに適していないピックスマップは何ですか? (つまり、なぜ EGL は 2 つのタイプのサーフェスを区別するのですか?) 違いがよくわかりません。

4

2 に答える 2

4

EGL ピックスマップは、基礎となるウィンドウ システムでサポートされているピックスマップのような概念を反映することを目的としています。用語は X11 に由来します。EGL仕様には次のように書かれています:

EGL は、集合的に EGLSurfaces と呼ばれるいくつかのタイプの描画サーフェスを定義します。これらには、画面上のレンダリングに使用されるwindowsが含まれます。オフスクリーン レンダリングに使用されるpbuffers 。pixmapsは、ネイティブ API を介してアクセスできるバッファへのオフスクリーン レンダリングに使用されます。EGL ウィンドウとピックスマップは、ネイティブ ウィンドウ システムのウィンドウとピックスマップに関連付けられています。

ピックスマップとウィンドウの主な違いは次のとおりです。

  • EGL 実装はピックスマップをサポートする必要はありません (ネイティブ ウィンドウ システムには同等の概念がない場合があります)。
  • 通常、ピックスマップはシングル バッファリングされますが、ウィンドウはダブルまたはトリプル バッファリングされる場合があります。
  • ピックスマップはオフスクリーン サーフェスです (ただし、オフスクリーン ウィンドウも可能です)。

基礎となるウィンドウ システムがピックスマップをサポートしていない場合、EGL ピックスマップを実際に使用することはできません (おそらく EGL 実装によって公開されません)。これらは、何らかの理由で X11 ピックスマップ (または同様のもの) にレンダリングする必要がある場合に備えて提供されているだけです。

一例として、GPU を使用して 3D オブジェクトをレンダリングし、それを X11 カーソルとして使用したい場合があります。その場合、ピックスマップを作成し、EGL ピックスマップ ドローアブルを作成し、何かを描画してから、使用XCreateCursorFromPixmapしてピックスマップをカーソルに変えることができます (これは、EGL 仕様が参照している種類の「ネイティブ API」の例です)。これよりも有用な例がおそらく存在します。

于 2014-01-22T12:53:16.530 に答える
1

おそらく、egl仕様のこの部分が役立ちます:

EGL は、カラー バッファーがネイティブ ピックスマップに格納されているレンダリング サーフェスもサポートしています。ピックスマップは、通常、画面外 (非表示) のグラフィックスまたは CPU メモリに割り当てられるという点で、ウィンドウとは異なります。ピックスマップは、ネイティブ ピックスマップとネイティブ ピックスマップ タイプが関連付けられているという点で pbuffer とは異なり、クライアント API 以外の API を使用してピックスマップにレンダリングできる場合があります。

于 2013-12-09T15:42:56.693 に答える