-2

openGLに同じ値を持つ2つの定数/シンボルがあるかどうか、私はたださまよっていました。

4

2 に答える 2

3

少なくとも 1 つのペアがあります。

#define GL_FALSE                          0
...
#define GL_NONE                           0
于 2013-10-10T19:38:26.467 に答える
2

通常、特定の状態を識別するトークンの場合、これは発生しませんが、コンテキスト固有です。他の応答で引き出されたように、状態ではなく概念を参照するより汎用的な定数のいくつかはエイリアスになります。ビットフィールドの個々の属性をマスクする目的で使用される定数も同様です。同じコンテキスト内では、渡されたすべての有効な値を区別することは不可能であるため、2 つの異なるトークンが同じ値を持つことはありません。ただし、同じ関数で意味のある使用ができないトークンGL_TRIANGLES(0x04) とGL_LINE_BITS(0x04) の場合、これは頻繁に発生します。

OpenGL が成長する方法である拡張機能は、拡張機能に使用する列挙型スペースの一部をベンダーに提供することにより、名前付き定数を割り当てます。これにより、正当な拡張機能と承認された拡張機能の間の衝突が防止され、拡張機能を時間の経過とともに改訂して新しいトークンを導入できるようになります。

そうは言っても、拡張機能が EXT ステータスから ARB ステータスに移行し、最終的にコア GL に採用される過程で、同じものを参照するトークンの定数値が再利用されることがあります。適切な例: GL_FRAMEBUFFER_EXT(EXT FBO 拡張から) は0x8D40( GL_FRAMEBUFFERARB 拡張/コア GL 3+ から) も0x8D40です。

ちなみに、OpenGL で使用される列挙空間は、実際には 16 ビットのみです ( GLenum32 ビットのデータ型として定義されているにもかかわらず)。API が使用できる個別の定数値は最大 65,535 あるため、再利用は避けられません。

于 2013-10-10T22:53:56.177 に答える