OpenGL 2.0以上に依存するプログラムを作成しています。 GL 2.0の仕様を見ると、ARB_shader_objectsで定義されている拡張が昇格されていることがわかります.ARBプレフィックスはGLバージョン2.0以上では必要なくなり、> GL2.0をサポートする実装ではこれをコアの実装。GL_GLEXT_PROTOTYPESの定義と関数ポインタの取得の比較
私のプログラムをコンパイルすると、Linux上でgccが警告:暗黙の関数宣言を行うと言われています。これらの関数を取得する1つの方法は、プログラム自体でそれらを宣言し、* GetProcAddress関数を介して関数ポインタを取得することです。
もう1つの方法は、glext.hをインクルードする前にGL_GLEXT_PROTOTYPESを定義して、デフォルトでGL2.0以上に存在する各関数の関数ポインタを取得する問題を回避することです。誰かがそれが推奨され、正しい方法であることをお勧めしますか?ベースラインは私のプログラムがOpenGL 2.0以上を必要としており、私はGL2.0以下をサポートしたくありません。
誰かがgleeやglewの使用を提案した場合、私は同じ目的を達成するためにgleeライブラリやglewライブラリを使用するオプションを使用することは望んでいません。
IIRC Vista以上で1.4をエクスポートして状況を少し改善* 1.4。 – genpfault
@genpfault:いいえ、そうではありません。 Vistaでは、デフォルトの1.1レンダラにswラスタライザの代わりにD3Dを使用していますが、そうでない場合でも同じです。 GL1.1は単にWin32 APIの一部であり、更新されたことはありません。 – derhass
GL_EXT_PROTOTYPESを定義し、それらのすべてに対してGetProcAddressを実行せずに関数を使用するのはどうですか?それはお勧めではありませんか?そうでなければ、なぜそれはglextヘッダーの一部ですか?さらに、GetProcAddressを常に実行しなければならないコア機能については、それらをコア機能として宣伝する目的は何ですか? – Divick