3

OpenGL (LWJGL) 用の Java ラッパーを使用しています

 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

FBO テクスチャ アタッチメント フォーマットを GL_RGBA16F に設定した場合のステータス。実際には、GL_RGBA 以外のすべてでこのエラーが発生します。これが私の FBO テクスチャのセットアップです。

glBindTexture(GL_TEXTURE_2D, texId);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, _width, _height, 0, GL_RGBA, GL_FLOAT, (ByteBuffer) null);

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_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glBindFramebuffer(GL_FRAMEBUFFER, _frameBuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texId, 0);
glDrawBuffers(GL_COLOR_ATTACHMENT0);

そして、ここに深さの添付ファイルがあります:

_depthBuffer = glGenRenderbuffers();
glBindRenderbuffer(GL_RENDERBUFFER, _depthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, _width, _height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthBuffer);

アップデート:

実際、内部フォーマットとフォーマットの場所を次のように入れ替えると: GL_RGBA,GL_RGBA16F FBO は問題なく完了します。

更新 1: これまでのところ、LWJGL フォーラムの誰からも回答が得られていません。また、この問題をバグとして提出しましたが、開発チームからも回答が得られませんでした。他の誰かが、float 形式を使用するテクスチャ アタッチメントを使用して FBO をテストし、完全性を報告できる場合現在、コードにエラーはないと思います。また、2 台のマシンでテストしたところ、同じ結果が得られました。

4

2 に答える 2

2

それは私の間違いでした.GL_RGBAをフォーマットとして渡しながら、間違って内部フォーマットパラメータとしてGL_RGBA16Fを入れました.問題は解決しました.

于 2012-07-29T21:42:26.630 に答える
1

名前付きテクスチャは「tex」ですが、カラーアタッチメントにバインドするテクスチャは「texId」です。

編集:

FBOを使用していますが、AMDまたはNVIDIA(OpenGL 4.2)ではなくIntel HD3000でアプリケーションを試すと、GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENTが表示されます。違いは、IntelHD3000はOpenGL3.1のみをサポートすることです。GL_RGBA16FはOpenGL3.3で利用できません、多分それはあなたの問題ですか?

于 2012-07-28T07:31:50.173 に答える