6. ウィンドウ、バッファ、レンダリングコンテキスト

6.010 オーバーレイプレーンはどのようにして使うのですか?

オーバーレイ飛行機は、層にされた表現を許します。 それらは、通る潜在的な飛行機ショーにおいて与えることを貸すために、透明な色をサポートします。 オーバーレイと敷物飛行機のどのような結合でも可能であるけれども、典型的なインプリメンテーションは主要なframebuffer飛行機とともに単一のオーバーレイ飛行機から成っています。 いくつかの機器でRGBオーバーレイが入手可能であるけれども、色インデックスモードだけでオーバーレイ飛行機が入手可能であることが共通です。 透明な色は、(0、0、および0)普通、RGBオーバーレイに向き、色インデックスのためのインデックス0は上塗りします。 主要な飛行機のために、オーバーレイ飛行機に与えることが非破壊的であることと逆もまた同様。

どのようにアクセスするかが飛行機に上塗りします windowingシステムインタフェースに依存する 。 GLUT 3.7が、オーバーレイの使用のために定義されたエントリポイントを持っている間、現在、エントリポイントは使用不可にされます。 オーバーレイを使うために、アプリケーションは、WGL、GLX、または別のプラットフォーム具体的なインタフェースを使う必要があります。

WGLとGLXのために、基本的なアイデアが同じです: オーバーレイ飛行機のために2つの文脈、主要な飛行機のための1と別のものを作成してください。 いったんそれらが作成されたら、文脈 アプリケーションがオーバーレイまたは主要な飛行機に与える必要があるかどうかに依拠しているので、流通する を作ってください。

WGLにおいて、オーバーレイによってピクセルフォーマットを選ぶために、ChoosePixelFormat()を使用するか、または敷物を飛行機の下に敷いてください。 アプリケーションがこの機能を呼ぶ時には、要求されたオーバーレイを示すために、PIXELFORMATDESCRIPTORのbReservedされたフィールドを使用するか、または敷物を飛行機の下に敷いてください。 1の価値が1機のオーバーレイ飛行機を示します。 iLayerTypeフィールドはPFD_MAIN_PLANEに設定される必要があります。

ピクセルフォーマットを設定した後に、いつものように主要な飛行機のための文脈を作成し、そして、オーバーレイ飛行機のための2番目の文脈を次の通り作成してください

HGLRC hORC;
hORC = wglCreateLayerContext(hDC、a);

帰りの価値を、呼び出しのためにwglCreateContext()にするのと同じ方法でチェックしてください。 NULLの価値は故障を示します。

GLXにおいて、オーバーレイによってvisualsのリストを得るために、glXChooseVisual()を使用してください。 GLX_LEVELを属性リストに追加し、要求されたレベルのfullwordしるしが続いていてください。 正値はオーバーレイを示します; ネガティブな価値は敷物を示します。 0の値が主要な飛行機を示し、それはデフォルトです。 典型的なアプリケーションは、1回 0に設定されたGLX_LEVEL 、再度の1に設定されたGLX_LEVELによってglXChooseVisual()を2回呼びます。 個々の呼び出しの後に、文脈を作成するために、戻されたvisualsのうちの1つを選んでください。

, 2つの共通の原因がある の、オーバーレイをサポートするアプリケーションによって、ピクセルフォーマットが見つかることができないか、またはビジュアルな時。 オーバーレイはプラットフォームで入手可能ではないかもしれないか、または色インデックスだけが入手可能な時には、RGBオーバーレイを要求できました。