デプスバッファに問題があります。テクスチャーに入れたいです。しかし、それは機能していないようです。
したがって、オブジェクトをレンダリングした後に実行するコードは次のとおりです。
glGenTextures(1, (GLuint*)&_depthTexture);
glBindTexture(GL_TEXTURE_2D, _depthTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
const pair<int, int> &img_size = getImageSize();
glTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32, img_size.first, img_size.second, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, img_size.first, img_size.second);
glClear( GL_DEPTH_BUFFER_BIT );
問題は(私はOpenGL 3.2以降を使用しています)、レンダリング用の画像のサイズが異なります。ほとんどの場合、サイズは2 ^ i x 2^jにはなりません。それで、それは問題ですか?
また、問題の他の部分は、次の後にフラグメントシェーダーにある可能性があります。
#version 140
uniform sampler2D depthTexture;
uniform ivec2 screenSize;
out vec4 outColor;
void main()
{
vec2 depthCoord = gl_FragCoord.xy / screenSize.xy;
float d = texture2D(depthTexture, depthCoord).x;
outColor = vec4(d, d, d, 1.0);
}
その後、2回目にいくつかのシェイプをレンダリングするときに、前の深度(テクスチャ深度バッファ)を使用して、いくつかの効果を実行したいと思います。
しかし、真剣に...デプスバッファをテクスチャに取り込むことができるコードを誰かに見せてもらえますか?テクスチャにレンダリングするのか、レンダリング後にテクスチャを抽出するのかは関係ありません。2回目のパスを実行するための深さの値を持つテクスチャがある限り...それが重要です!