0

自分が書いたライブラリをポータブルにしようとしています。これはグラフィックライブラリであり、高度なOpenGLを非常に多用しています。このライブラリは、OpenGL4.2をサポートするマシンで開発しました。

OpenGL2のコア機能ではないが拡張機能(この場合はglGenerateMipmapEXT)で使用できるOpenGL 4関数(簡単な例はglGenerateMipmap)がいくつかあります。古いハードウェアで実行している場合、OpenGL 4関数ポインターはNULLですが、EXTの接尾辞が付いたOpenGL 2拡張関数はそうではなく、問題なく動作します。

GLEWを使用しています。OpenGL4の関数がOpenGL2EXTの関数と同じではない場合があることを私は理解していますが、ほとんどの場合、それらは同じです。GLEWにEXT関数をOpenGL4関数としてロードさせる方法はありますか?または、すべてのOpenGL 4関数の名前をEXTの対応する関数に変更し続けていますか?他に何かありますか?

4

1 に答える 1

3

いいえ、GLEWを嘘にして、拡張機能がコア機能であると偽ることはできません。

一般に、OpenGLコードを作成するときは、特定のバージョンと拡張機能のセットを選択して書き込みます。オプションの機能(ハードウェア固有のもの)が必要な場合は、それらのAPIを呼び出す追加のコードパスを記述します。

MacOSXのコア3.2サポートを除いて、古い拡張機能が新しいハードウェアで無期限にサポートされることを期待できます。そうすれば、古いプログラムを新しい実装で実行できます。したがって、GL_EXT_framebuffer_objectを実装していないGL4.x実装を見つけることはありません。

于 2012-07-03T02:00:30.050 に答える