私は、OpenGLの命名規則と拡張機能がどのように機能するかについての一般的な理解を形成したと思いました。
これまでの私の理解は次のとおりです。
接尾辞ない -などglGenBuffers()
。この機能はコアプロファイルの一部です。wikiページには、これは、バージョン1.5から始まるコアプロファイルに追加されたことを私に伝えます。
ARB -などglGenBuffersARB()
。この関数は、標準化されたGL_ARB_vertex_buffer_object
拡張機能の一部です。この拡張機能の仕様はGenBuffersARB()
、「新しいプロシージャと関数」セクションで明確に宣言されています。「依存関係」セクションでは、ハードウェアが拡張機能をサポートしている場合、1.4 +コンテキストから潜在的にこれにアクセスできることがわかります。
EXT-一部のベンダーのみがサポートできるベンダー固有の拡張機能です。頂点バッファオブジェクトは、レジストリにEXT拡張を持たないようです。
私の理解が崩れる場所は次のとおりです。
glGenFramebuffers
、としてウィキ示すように、3.0のコアに添加しました。
ここで、3.0よりも低いコアプロファイルバージョンのフレームバッファー機能にアクセスしたいと思います。だから私はそれを拡張機能として使いたい。仕様レジストリは、ARBとEXTという 2つの拡張機能があることを教えてくれます。
質問1 -ARB拡張が存在する場合、なぜEXT拡張が存在するのですか?常にベンダー固有のものよりも標準化されたものを選択しませんか?
「新しい手順と関数」セクションのARB仕様を見ると、拡張GenRenderbuffers()
機能が関数を定義していることがわかります。今回はARBサフィックスはありません。GLEWには関数プロトタイプがまったくありませんglGenRenderbuffersARB()
。奇妙な。
ただし、EXT仕様にはGenRenderbuffersEXT()
新しい関数セクションに関数があり、GLEWにもありglGenRenderbuffersEXT()
ます。
質問2 -EXTサフィックスがある場合、ARBサフィックスがないのはなぜですか?ARB関数とコア関数の名前が同じであれば、これはARBに対してどのように機能しますか?
質問3-最終的に1.4プロファイルのフレームバッファ機能が必要です。最大のハードウェア互換性カバレッジを得るために、どの拡張機能とどの機能セットを使用する必要がありますか?