깊이 버퍼에 문제가 있습니다. 나는 감촉을 넣고 싶다. 그러나 그것은 효과가없는 것처럼 보입니다.텍스처에 대한 OpenGL 깊이 버퍼 (다양한 이미지 크기 용)
그래서, 여기에 개체를 렌더링 후 내가 실행 코드의 조각을이다 :
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 씩 2^i가되지 않습니다. 그래서, 그게 문제입니까? 내가 두 번째 몇 가지 모양을 렌더링 할 때, 나는 이전의 깊이를 사용하려면 그 후
#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);
}
(텍스처 깊이 :
또한, 문제의 다른 부분은 후 조각 쉐이더에있을 수 있습니다 버퍼), 몇 가지 효과를 수행 할 수 있습니다.
심각하게도 ... 누군가가 깊이 버퍼를 텍스처로 가져올 수있는 코드 조각을 보여줄 수 있습니까? 텍스쳐에 렌더링이되는지 또는 렌더링 후에 텍스처가 추출되는지는 상관하지 않습니다! 깊이 값을 가진 텍스처가 두 번째 패스를 수행하는 한 ... 중요합니다.
"작동하려면 솔기가 없습니다." 어떤 방법으로 작동하지 않습니까? –
내 이미지가 검은 색입니다! 그리고 다른 웹 사이트에 따르면, 깊이 버퍼는 흰색과 검은 색으로 가까울 때 흰색으로 보일 것입니다.하지만 내 이미지의 절반은 흰색이어야합니다! ... 최소한 새 삼각형으로 덮인 부분! – widgg
"깊이가 완만하고 까맣게 가까울 때 깊이 버퍼가 흰색으로 보일 것"그곳에 저장된 내용에 따라 다릅니다. 기본 깊이 범위를 사용하면 참입니다. –