1

この一連のコマンドを OpenGL に発行して、深度/ステンシル バッファーを作成します。

glBindTexture(GL_TEXTURE_2D, 0)
glGenTextures(1, &TextureId)
glBindTexture(GL_TEXTURE_2D, TextureId)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 640, 480,  0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glBindTexture(GL_TEXTURE_2D, 0)

次に、それをフレームバッファにアタッチしようとします

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, TextureId, 0)

しかし、への呼び出しはglCheckFramebufferStatusEXT戻りますGL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT。深度ステンシル バッファをアタッチしない場合、このテストは問題なく実行されます (ただし、明らかにディスプレイが壊れています)。

手がかりはありますか?

編集: 変更: テクスチャの作成を基本的なテクスチャの形式に簡略化しました。

4

3 に答える 3

2

さて、末尾のEXTをすべて削除すると、問題は解消されました…</ p>

于 2012-03-22T17:22:16.213 に答える
2

アタッチしGL_DEPTH_STENCIL_ATTACHMENTているテクスチャには、深度情報もステンシル情報も含まれていません。にテクスチャをアタッチする場合は、GL_DEPTH_STENCIL_ATTACHMENTそのイメージ フォーマットに深度とステンシル データが含まれていることを確認してください。

于 2012-03-22T18:33:40.707 に答える
1

現在、OpenGL バージョンは EXT 拡張を必要としません~~~

于 2012-03-24T02:18:07.903 に答える