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

凌晨2点

我正在尝试运行OpenGL代码,但没有在glClear()中清除GL_DEPTH_BUFFER_BIT,因此我无法渲染场景。我添加了这一点,并渲染了场景。为什么需要使用此清除位?

我可能知道原因,要清除GPU先前使用的深度缓冲区值,但我只想确认一下。

GraphicsMuncher

深度缓冲区保存场景中像素的“深度”。当OpenGL渲染几何图形时,会将每个片段(像素)与深度缓冲区的值进行比较。如果该片段的z值小于缓冲区中的z值,则它将变为新的最低值,从而成为要渲染的像素。如果没有,请不要渲染它-有更近的东西阻止了它。这就是要点-您可以自己阅读详细信息。

现在,当场景改变时会发生什么?您想清除屏幕以便重绘所有内容,但同时您也想清除深度缓冲区。为什么?因为否则将所有新像素与前一帧的深度值进行比较。那没有道理-应该将它们与所在的框架进行比较!你的推理是正确的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C / C ++中难以理解的语法!!为什么我们可以这样分配缓冲区?

来自分类Dev

C / C ++中难以理解的语法!!为什么我们可以这样分配缓冲区?

来自分类Dev

在OpenGL中查看深度缓冲区

来自分类Dev

在渲染过程的不同子过程中写入相同的颜色缓冲区

来自分类Dev

如何在不禁用深度测试的情况下读取延迟渲染的光照过程中的深度缓冲区?

来自分类Dev

为什么我们使用char *作为缓冲区,为什么不使用boost :: asio中的字符串呢?

来自分类Dev

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

来自分类Dev

为什么我们在mips中使用写缓冲区?[cache]

来自分类Dev

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

来自分类Dev

JAVA-ThreadPoolExecutor 为什么我们需要在recheck过程中判断execute函数中的worker数量?

来自分类Dev

我们可以直接在Java的字节缓冲区中读取对象吗?

来自分类Dev

在OpenGL中清除双精度缓冲区

来自分类Dev

FFmpeg:为什么我们需要在转换过程中创建临时文件

来自分类Dev

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

来自分类Dev

为什么单个深度缓冲区足以满足此vulkan swapchain渲染循环的需要?

来自分类Dev

Python中的Memset(),清除缓冲区

来自分类Dev

强制在scanf中清除缓冲区

来自分类Dev

Python中的Memset(),清除缓冲区

来自分类Dev

Java中的协议缓冲区:我们可以有效地处理原始数组吗?

来自分类Dev

为什么在LZW压缩中压缩缓冲区需要大于输入缓冲区?

来自分类Dev

为什么我的iOS录音回调中的音频缓冲区未满?

来自分类Dev

为什么我的iOS录音回调中的音频缓冲区未满?

来自分类Dev

为什么此代码中的缓冲区溢出行为与我预期的不同?

来自分类Dev

为什么我的缓冲区存储在堆栈中的两个位置?

来自分类Dev

为什么在Javascript中绝不转移传输的缓冲区?

来自分类Dev

为什么sscanf将\ n存储在缓冲区中

来自分类Dev

OpenGL中的缓冲区绘图

来自分类Dev

在openGL中多次绑定缓冲区

来自分类Dev

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

Related 相关文章

  1. 1

    C / C ++中难以理解的语法!!为什么我们可以这样分配缓冲区?

  2. 2

    C / C ++中难以理解的语法!!为什么我们可以这样分配缓冲区?

  3. 3

    在OpenGL中查看深度缓冲区

  4. 4

    在渲染过程的不同子过程中写入相同的颜色缓冲区

  5. 5

    如何在不禁用深度测试的情况下读取延迟渲染的光照过程中的深度缓冲区?

  6. 6

    为什么我们使用char *作为缓冲区,为什么不使用boost :: asio中的字符串呢?

  7. 7

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

  8. 8

    为什么我们在mips中使用写缓冲区?[cache]

  9. 9

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

  10. 10

    JAVA-ThreadPoolExecutor 为什么我们需要在recheck过程中判断execute函数中的worker数量?

  11. 11

    我们可以直接在Java的字节缓冲区中读取对象吗?

  12. 12

    在OpenGL中清除双精度缓冲区

  13. 13

    FFmpeg:为什么我们需要在转换过程中创建临时文件

  14. 14

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

  15. 15

    为什么单个深度缓冲区足以满足此vulkan swapchain渲染循环的需要?

  16. 16

    Python中的Memset(),清除缓冲区

  17. 17

    强制在scanf中清除缓冲区

  18. 18

    Python中的Memset(),清除缓冲区

  19. 19

    Java中的协议缓冲区:我们可以有效地处理原始数组吗?

  20. 20

    为什么在LZW压缩中压缩缓冲区需要大于输入缓冲区?

  21. 21

    为什么我的iOS录音回调中的音频缓冲区未满?

  22. 22

    为什么我的iOS录音回调中的音频缓冲区未满?

  23. 23

    为什么此代码中的缓冲区溢出行为与我预期的不同?

  24. 24

    为什么我的缓冲区存储在堆栈中的两个位置?

  25. 25

    为什么在Javascript中绝不转移传输的缓冲区?

  26. 26

    为什么sscanf将\ n存储在缓冲区中

  27. 27

    OpenGL中的缓冲区绘图

  28. 28

    在openGL中多次绑定缓冲区

  29. 29

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

热门标签

归档