深度+模板帧缓冲区问题

海顿诉哈拉赫

我的OpenGL应用程序既需要模板缓冲区,也需要深度缓冲区。深度缓冲区至少需要通过帧缓冲区对象渲染为纹理,以便可以进行延迟着色和其他后期处理效果。我已经设置了这个帧缓冲区(使用GL_DEPTH24_STENCIL8),但是我有一些顾虑和问题。

首先,我想使用32位浮点深度缓冲区。GL_DEPTH32F_STENCIL8选项似乎是最明显的。我想知道的是,这种格式实际内存占用量是多少?从逻辑上讲,它是40位,但是知道我对对齐的处理方式,如果将其填充到64位就不会感到惊讶,许多消息人士说,这就是事实。我想确定。

也许将深度和模板缓冲区分开对我来说更好?我是否需要担心这一点不受支持?高速缓存的效率如何,因为模板测试和深度测试经常一起执行?

PS。我没有使用多重采样。

安东·科尔曼(Andon M.Coleman)

GL_DEPTH32F_STENCIL8是64位格式;深度为32位,模板为8位,对齐为24位。

有时知道这两个桌面图形API会派上用场,因为这是D3D10中添加的相同格式。D3D使得仅通过查看其名称即可轻松掌握其格式的大小。

在D3D中,该格式称为DXGI_FORMAT_D32_FLOAT_S8X24_UINT

   D32_FLOAT 表示它存储32位深度(浮点数)

   S8X24_UINT 表示它存储8位模板+ 24位未使用(无符号整数)

D3D的好处在于,格式中会明确声明何时有未使用的位用于填充(这就是Xn格式所指示的内容)。RGBD3D中没有彩色可渲染的8位格式,因为这会导致对齐问题。它们是4的全部RGBX或某种排列,以便产生32位像素。


为了给您一个权威的答案,我将向您介绍首先将此格式添加到GL的扩展名:

GL_ARB_depth_buffer_float

概述

[...]

此外,此扩展提供了新的打包深度/模板像素格式(请参阅EXT_packed_depth_stencil),该格式具有64位像素,包括32位浮点深度值8位模板24个未使用位还提供了打包的深度/模板纹理内部格式。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

深度模板缓冲区不起作用DirectX11

来自分类Dev

OpenGL FBO不增加深度缓冲区

来自分类Dev

深度+模板帧缓冲问题

来自分类Dev

从片段着色器访问深度缓冲区

来自分类Dev

glsl es 2.0丢弃和深度缓冲区

来自分类Dev

OpenGL GL_COLOR_BUFFER_BIT属性位是否表示深度和模板缓冲区相关的状态?

来自分类Dev

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

来自分类Dev

OpenGL:glLoadMatrix和深度缓冲区

来自分类Dev

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

来自分类Dev

尝试进行深度附着时,帧缓冲区状态错误(返回36054)

来自分类Dev

深度缓冲区和模板缓冲区问题QML

来自分类Dev

OpenGL帧缓冲区深度不起作用

来自分类Dev

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

来自分类Dev

Direct2D深度缓冲区

来自分类Dev

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

来自分类Dev

用于着色器资源视图到深度模板缓冲区资源的哪种格式?

来自分类Dev

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

来自分类Dev

无法从Compute着色器读取深度缓冲区

来自分类Dev

OpenGL ES上深度缓冲区的精度

来自分类Dev

在OpenGL中查看深度缓冲区

来自分类Dev

如何获得WGL创建32位深度的缓冲区?

来自分类Dev

错误的深度缓冲区(至纹理)输出?

来自分类Dev

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

来自分类Dev

Direct2D深度缓冲区

来自分类Dev

FBO深度缓冲区为红色

来自分类Dev

默认帧缓冲区的采样深度?(GL ES 3)

来自分类Dev

LibGDX 如何从 FrameBuffer 获取深度缓冲区?

来自分类Dev

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

来自分类Dev

使用自定义帧缓冲区时深度测试不起作用

Related 相关文章

热门标签

归档