1

フレームバッファにカラーアタッチメントとしてデプステクスチャを付けたいと思います。(私は iOS を使用しており、GL_OES_depth_texture がサポートされています)

だから私はこのようなテクスチャを設定します:

glGenTextures(1, &TextureName);
glBindTexture(GL_TEXTURE_2D, TextureName);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, ImageSize.Width, ImageSize.Height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, 0);


glGenFramebuffers(1, &ColorFrameBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, ColorFrameBuffer);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, TextureName, 0);

しかし、フレームバッファのステータスを確認すると、GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

ここで何が間違っていますか?

、との組み合わせも試しましたがGL_DEPTH_COMPONENT16、どれも機能しませんでした (GL_OES_depth24 もサポートされています)。GL_DEPTH_COMPONENT24_OESGL_DEPTH_COMPONENT32_OES

4

2 に答える 2

2

できません。深度内部フォーマットのテクスチャは、深度アタッチメントにのみ添付できます。カラー内部フォーマットを持つテクスチャは、カラー アタッチメントにのみアタッチできます。

于 2013-04-24T15:24:15.093 に答える
0

前の回答が述べたように、深度形式のテクスチャをカラー サーフェスとしてアタッチすることはできません。あなたのコメントを見ると、本当に 1 チャンネルの float 形式にレンダリングした後です。

http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txtを見ると、float 形式のテクスチャ形式を使用できます。

次に、テクスチャを初期化して、1 つのチャネルのみを含むアルファ マップにすることができます。

glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, ImageSize.Width, ImageSize.Height, 0, GL_ALPHA, GL_FLOAT, 0);

これは、デバイスでサポートされている拡張機能に応じて機能する場合と機能しない場合があります。

于 2014-06-18T02:17:12.020 に答える