次のようなテクスチャを生成します。
GLuint id;
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(
GL_TEXTURE_2D, 0,
GL_RGBA16,
//GL_RGBA16F_ARB, //< Won't work
256, 256, 0, GL_RGBA, GL_FLOAT, NULL
);
glBindTexture(GL_TEXTURE_2D, 0);
レンダリング用にフレームバッファオブジェクト(FBO)にアタッチします。内部形式をに設定すると、これらすべてが魅力のように機能しますGL_RGBA16。しかし、私はより高いダイナミックレンジが必要であり、それでうまくいくGL_RGBA16F_ARBかもしれないと考えていました。
残念ながら、上記のコードでに置き換えるGL_RGBA16と、テクスチャが機能しなくなったようです。GL_RGBA16F_ARBFBO /テクスチャスティックにレンダリングしようとするものは何もありません。テクスチャを使用すると、ランダムなゴミが含まれます。(紫が多いのですが)何が悪いのかを示唆するエラーメッセージが表示されていれば、それほどイライラすることはありませんが、見つからないようです。つまり、-callの後にglGetError()戻り、テクスチャをアタッチすると戻ります。0glTexImage2DglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)GL_FRAMEBUFFER_COMPLETE_EXT
私はまだいじっていglClampColorARB(...)ません...まだ:)
- 思いもよらなかった場所・道の間違いをチェックするのを忘れてしまいましたか?
- -textures
GL_RGBA16F_ARBには、私が行っていない特別な処理が必要ですか? - 他に間違っている可能性のあるものはありますか?
すべてがスムーズに動作するので、私は困惑していGL_RGBA16ます... :(
編集:を使用GL_RGBA16F_ARBすると、画面にレンダリングしようとした最初のフレームが作成されません。どこかでエラーメッセージが表示されるはずです。
編集: ShadowIceの動作するコード例を調べることにより、FBOの深度バッファーglRenderBufferStorageEXT(...) GL_DEPTH_COMPONENT24を変更すると問題が解消され、2番目のパラメーターとしてではなくを指定することがわかりましたGL_DEPTH_COMPONENT16。なぜこれが機能するのかわかりませんが、どうやら機能しているようです。
また、ShadowIceのコードは、そこで反対の置換を行うと私のように壊れます。