什么是深度模具视图
What is a depth stencil view
此代码出现在由默认windows phone 8 direct3d项目创建的Direct3DBase类的准备中:
// Create a depth stencil view.
CD3D11_TEXTURE2D_DESC depthStencilDesc(
DXGI_FORMAT_D24_UNORM_S8_UINT,
static_cast<UINT>(m_renderTargetSize.Width),
static_cast<UINT>(m_renderTargetSize.Height),
1,
1,
D3D11_BIND_DEPTH_STENCIL
);
ComPtr<ID3D11Texture2D> depthStencil;
DX::ThrowIfFailed(
m_d3dDevice->CreateTexture2D(
&depthStencilDesc,
nullptr,
&depthStencil
)
);
CD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc(D3D11_DSV_DIMENSION_TEXTURE2D);
DX::ThrowIfFailed(
m_d3dDevice->CreateDepthStencilView(
depthStencil.Get(),
&depthStencilViewDesc,
&m_depthStencilView
)
);
什么是深度模具视图?
D3D11分离了资源(本质上只是内存块)和视图(从图形管道的不同部分"查看"或访问这些内存块的方法)的概念。在本例中,资源是所需宽度、高度和格式的2D纹理,视图是该纹理上的深度模具视图。
如果要渲染某个内容,可以通过调用ID3D11DeviceContext::OMSetRenderTarget()将渲染目标视图和深度模具视图绑定到管道,从而将指定视图的后台资源绑定为渲染目标和深度/模具缓冲区。
只有当你想做更复杂的事情,比如将纹理数组的切片绑定为渲染目标或深度模具缓冲区时,在帧的不同阶段以不同的方式重新解释相同的资源内存时,这种解耦的优势才会真正显现出来。它还使使用渲染目标或深度模板缓冲区作为纹理的常见情况比D3D9中的情况更简单,也不那么特殊。
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 视图中的参数推导失败:take_while
- OpenGL在启用深度测试时不会丢弃我的碎片
- 如何维护资源管理器项目视图中当前可见的项目列表
- 在另一个类视图中添加最多2个图表的正确方法是什么
- OpenVR:向视图方向移动
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 将所选值(通过视图)从 boost::multi_array 复制到另一个数组 (C++)
- C++尝试深度复制唯一指针时出现内存访问冲突
- 如何在不使用滚动条的情况下使视图更改
- 列表视图更改选择颜色
- 试图找到二叉树的深度
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 操纵安卓相机的深度图导致应用程序崩溃
- 深度值没有意义 R200 相机
- 在 Qml 中从 QSqlTableModel 中删除单行时视图不一致
- 如何从未知视图中声明范围::v3::View 变量
- 控制带有信号/插槽的Qt QML滑动视图
- 什么是深度模具视图