由默认创建的深度模板缓冲区引起的问题



我正在学习DirectX SDK中的阴影地图样本。这个示例在初始化期间创建了一个模板表面,并说:

 Create the depth-stencil buffer to be used with the shadow map
 We do this to ensure that the depth-stencil buffer is large
 enough and has correct multisample type/quality when rendering
 the shadow map.  The default depth-stencil buffer created during
 device creation will not be large enough if the user resizes the
 window to a very small size.  Furthermore, if the device is created
 with multisampling, the default depth-stencil buffer will not
 work with the shadow map texture because texture render targets
 do not support multisample.

这是什么意思?我试图评论在模板缓冲区上创建和操作的语句,然后我得到了相当不稳定的结果:如果我使窗口更大,阴影效果很好,而当我使窗口小得多时,阴影停止移动。有人能给我解释一下吗?非常感谢!!

主深度模板缓冲区是渲染到主窗口时使用的缓冲区,因此将具有与窗口相同的分辨率。然而,阴影过程不必使用相同的分辨率、视口等。这就是为什么他们创建了第二个DepthStencil缓冲区,该缓冲区具有与用于渲染Shadowmap的视口相同的分辨率。

同样,正如引用所说,它可能不希望使用相同的格式,多采样设置等,你用来渲染你的场景,创建阴影地图。

编辑:

你使用模板缓冲区,因为你想要存储最近的闭塞三角形的深度。

一个DepthStencil缓冲区不"支持影子映射",它只是一个技术,碰巧需要一个深度缓冲区,最好有某些属性(如正确的大小,没有MSAA等)

相关内容

  • 没有找到相关文章

最新更新