9

Open GL では数値を使用する必要があることはわかりましたが、通常の int と float、または既存のラッパー クラス (Open GL の世界全体がうまく適合するために必要な方) を使用しないのはなぜですか? 名前と Open GL でのみ使用されている名前以外に違いはありますか、それとも名前が異なるだけでほとんど同じものですか?

4

1 に答える 1

21

intは(ここでは単純化しすぎていますが)32ビットシステムでは32ビット、64ビットシステムでは64ビットであるため、「int」だけでも普遍的な概念ではありません。グラフィックコードを実行するハードウェアはCPUとは異なるハードウェアであり、新しいタイプの必要性が生じていることに注意してください。OpenGLは、独自のtypedefを使用することにより、データをグラフィックカードに送信するときに、適切な数のビットが適切な方法でパックされるようにすることができます。

「異なるint」の乱雑さを抽象化する変換関数を使用してこれを行うことは可能ですが、グラフィックカードに出入りするすべての数値について話している場合は一般に受け入れられないパフォーマンスの低下が発生します。

tl; dr "int"を使用する場合、プロセッサのハードウェアを念頭に置いて記述しています。「GLInt」を使用する場合は、グラフィックカードのハードウェアを念頭に置いて書いています。

編集:コメントで指摘されているように、64ビットプロセッサでintは、互換性の理由から32ビットにすることができます(おそらくそうなるでしょう)。歴史的には、8、16、および32ビットのハードウェアまで、これはプロセッサのネイティブサイズでしたが、技術的には、コンパイラがマシンコードを作成するときに使用したいと感じるものは何でもです。@NicolBolasと@MarkDickinsonへの小道具

于 2012-09-07T22:55:40.633 に答える