c++ - GL_DRAW_FRAMEBUFFERターゲットを使用すると、glBindFramebufferが「無効な操作」GLエラーを引き起こす

原文 c++ opengl opengl-3

GeForce 9800 GTXでOpenGL 3.3を使用しています。 3.3のリファレンスページには、glBindFramebufferを使用した無効な操作は、glGenFramebuffersから返されなかったフレームバッファIDを示すと記載されています。それでも、glGenFramebuffersから返されたIDと、後でglBindFramebufferに送信したIDを出力しましたが、これらは同じです。

ただし、glBindFramebufferのターゲットパラメータをGL_DRAW_FRAMEBUFFERからGL_FRAMEBUFFERに変更すると、GLエラーはなくなります。ドキュメントには、GL_DRAW_FRAMEBUFFERを使用できるはずだと書かれています。 GL_DRAW_FRAMEBUFFERにバインドできない場合はありますか? GL_DRAW_FRAMEBUFFERの代わりにGL_FRAMEBUFFERを使用することによる害はありますか?これはより大きな問題の症状ですか?
答え
glBindFramebuffer(GL_FRAMEBUFFER)が機能せず、glBindFramebuffer(GL_DRAW_FRAMEBUFFER)が機能し、これらの関数と列挙型のEXTバージョンについて話しているのではない場合( "EXT"サフィックスがないことに注意)、何か間違ったことをした可能性があります。 GL_INVALID_OPERATIONは、異なる状態に依存するパラメーターの複数の組み合わせが競合しているときに発生するエラーです。それが欠落している列挙型だった場合は、GL_INVALID_ENUMを取得する必要があります。

もちろん、それは単にドライバのバグである可能性もあります。しかし、コードがどのように見えるかを知らずに知る方法はありません。
関連記事

c++ - クラスのメンバーアクセス

c++ - ImageMagick C++ API出力16ビットグレースケールpng?

c++ - TWAINでサポートされている解像度を列挙するにはどうすればよいですか

c++ - C++入力が正しいかどうかをユーザーに尋ねるエラー

c# - 分類ライブラリ

c++ - 警告—ポインターと組み合わせた算術式の不審な切り捨て

c++ - VM内でのOpenGL 2.1の使用

c++ - 積分近似関数の再帰

c++ - OpenCVのHello Worldの構築中にシンボルが見つからない

c++ - 他のメモリ順序とmemory_order_seq_cstの違いは何ですか?