在OpenGL中查看深度缓冲区

御坤

我在查看渲染到纹理的深度时遇到麻烦。当我将深度作为RGB渲染到纹理时,我可以查看它,但是当我尝试仅渲染深度时,我只会得到黑色。我已经搜索了许多小时,并从其他类似问题中实施了修复程序,但均无济于事。我已禁用GL_TEXTURE_COMPARE_MODE,添加了glDrawBuffer(GL_NONE)和glReadBuffer(GL_NONE)。

我在OSX 10.9和OpenGL 4.1上运行。为了简洁起见,我已从粘贴的代码中删除了gl错误检查。

深度FBO /纹理的设置是这样的:

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

glGenTextures(1, &renderedTexture);
glBindTexture(GL_TEXTURE_2D, renderedTexture);
glTexImage2D(GL_TEXTURE_2D, 0,
             GL_DEPTH_COMPONENT,
             fbWidth,
             fbHeight,
             0,
             GL_DEPTH_COMPONENT,
             GL_FLOAT,
             0);

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_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
//    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_MODE, GL_NONE);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, renderedTexture, 0);
glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);

if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
    assert(false && "framebuffer NOT OK");

深度片段-渲染RGB时我可以看到深度

#version 150 core
#if RENDER_RGB
out vec4 outColor;

void main(){
    vec3 color = gl_FragCoord.z);
    outColor = vec4(color, 1.0);
}

#else

void main(){
    gl_FragDepth = gl_FragCoord.z;
}
#endif

回读深度纹理,我正在使用此片段着色器:

#version 150 core
in vec2 UV;

uniform sampler2D renderedTexture;
out vec4 outColor;

void main(){
    vec3 color = vec3( texture(renderedTexture, UV).r );
    outColor = vec4(color, 1.0);
}
御坤

没关系,它确实有效!我的问题是从未调用过用于深度纹理的仅深度FBO设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在渲染过程中我们必须清除OpenGL中的深度缓冲区?

来自分类Dev

OpenGL中的缓冲区绘图

来自分类Dev

OpenGL计算着色器中的样本深度缓冲区

来自分类Dev

OpenGL FBO不增加深度缓冲区

来自分类Dev

OpenGL ES 2.0是否可以同时绘制深度和“颜色”缓冲区(不使用MRT)?

来自分类Dev

避免OpenGL缓冲区中的重复数据

来自分类Dev

为什么我的opengl场景有深度缓冲区问题?

来自分类Dev

OpenGL:glLoadMatrix和深度缓冲区

来自分类Dev

在OpenGL ES中使用深度和模具渲染缓冲区附件作为帧缓冲区

来自分类Dev

iOS-Metal:如何清除深度缓冲区?类似于OpenGL中的glClear(GL_DEPTH_BUFFER_BIT)

来自分类Dev

在OpenGL中更新模具缓冲区时的问题

来自分类Dev

在OpenGL中创建不可变缓冲区

来自分类Dev

GLSL:结构数组与OpenGL缓冲区中数组的结构

来自分类Dev

OpenGL帧缓冲区深度不起作用

来自分类Dev

在C ++中实现栅格化和深度缓冲区

来自分类Dev

深度缓冲区似乎不起作用-OpenGL Shader

来自分类Dev

在OpenGL中清除双精度缓冲区

来自分类Dev

OpenGL缓冲区问题

来自分类Dev

编码OpenGL在C中捕获的缓冲区

来自分类Dev

在openGL中多次绑定缓冲区

来自分类Dev

Opengl OpenTK-绘制深度缓冲区时出现白屏

来自分类Dev

在金属中如何清除深度缓冲区或模板缓冲区?

来自分类Dev

深度+模板帧缓冲区问题

来自分类Dev

OpenGL ES上深度缓冲区的精度

来自分类Dev

OPENGL ES 2.0。安卓。深度缓冲区的奇怪行为

来自分类Dev

在OpenGL ES 2.0中,将FBO与纹理深度缓冲区一起使用时,深度纹理缓冲区不起作用

来自分类Dev

在C ++中实现栅格化和深度缓冲区

来自分类Dev

FBO深度缓冲区为红色

来自分类Dev

在 openGL 上将深度缓冲区显示为图像

Related 相关文章

  1. 1

    为什么在渲染过程中我们必须清除OpenGL中的深度缓冲区?

  2. 2

    OpenGL中的缓冲区绘图

  3. 3

    OpenGL计算着色器中的样本深度缓冲区

  4. 4

    OpenGL FBO不增加深度缓冲区

  5. 5

    OpenGL ES 2.0是否可以同时绘制深度和“颜色”缓冲区(不使用MRT)?

  6. 6

    避免OpenGL缓冲区中的重复数据

  7. 7

    为什么我的opengl场景有深度缓冲区问题?

  8. 8

    OpenGL:glLoadMatrix和深度缓冲区

  9. 9

    在OpenGL ES中使用深度和模具渲染缓冲区附件作为帧缓冲区

  10. 10

    iOS-Metal:如何清除深度缓冲区?类似于OpenGL中的glClear(GL_DEPTH_BUFFER_BIT)

  11. 11

    在OpenGL中更新模具缓冲区时的问题

  12. 12

    在OpenGL中创建不可变缓冲区

  13. 13

    GLSL:结构数组与OpenGL缓冲区中数组的结构

  14. 14

    OpenGL帧缓冲区深度不起作用

  15. 15

    在C ++中实现栅格化和深度缓冲区

  16. 16

    深度缓冲区似乎不起作用-OpenGL Shader

  17. 17

    在OpenGL中清除双精度缓冲区

  18. 18

    OpenGL缓冲区问题

  19. 19

    编码OpenGL在C中捕获的缓冲区

  20. 20

    在openGL中多次绑定缓冲区

  21. 21

    Opengl OpenTK-绘制深度缓冲区时出现白屏

  22. 22

    在金属中如何清除深度缓冲区或模板缓冲区?

  23. 23

    深度+模板帧缓冲区问题

  24. 24

    OpenGL ES上深度缓冲区的精度

  25. 25

    OPENGL ES 2.0。安卓。深度缓冲区的奇怪行为

  26. 26

    在OpenGL ES 2.0中,将FBO与纹理深度缓冲区一起使用时,深度纹理缓冲区不起作用

  27. 27

    在C ++中实现栅格化和深度缓冲区

  28. 28

    FBO深度缓冲区为红色

  29. 29

    在 openGL 上将深度缓冲区显示为图像

热门标签

归档