Practical Rendering and Computation with Direct3D 11
+ -

2.3.3生成资源内容

2024-06-17 12 0

还有一对设备上下文方法可用于生成资源的内容。我们在这里讨论这两种方法.

生成Mip

在本章的早些时候,我们看到了杂项资源创建标志,用于指示当渲染其顶层时,一个纹理资源应该能够生成较低分辨率的mip映射级别。这通过D3D11_RES0URCE_MISC_GENERATE_MIPS标志来指示。mip映射级别数据的生成是使用ID3DllDeviceContext::GenerateMips()方法启动的。方法原型如清单2.55所示。该方法只获取一个指向要更新的着色器资源视图的指针,该视图的附加资源必须是使用上述标志创建的。此外,将生成的mip映射级别的数量由shadersource视图选择的子资源范围定义。

void GenerateMips(
ID3D11ShaderResourceView *pShaderResourceView
) ;

解析子资源

另一种可用于生成资源内容的方法是ID3DllDeviceContext::ResolveSubresource()方法。这用于获取源多采样纹理资源,并使用子采样来计算非多采样目标资源中相应像素的最终颜色值。这是在屏幕上显示多采样渲染目标的内容之前所需的步骤,因此是高质量渲染图像输出的重要操作。在DXGI交换链的情况下,它支持在用Present()方法触发的缓冲区交换期间自动执行解析功能。从技术上讲,这允许应用程序在某些情况下跳过手动解析过程,但如果将多采样渲染目标用作任何其他算法(如任何后处理技术)的输入,则需要在应用任何每像素算法之前很好地解决渲染目标。方法的原型如清单2.56所示。

void ResolveSubresource(
ID3D11Resource *pDstResource,
UINT DstSubresource,
ID3DllResource *pSrcResource,
UINT SrcSubresource,
DXGI_FORMAT Format
);

此方法允许为源和目标资源提供子源索引。这也意味着必须同时解析完整的子资源,并且不允许孤立地操作子资源的部分。此外,当两个资源具有兼容的TYPELESS格式时,还会传递一个格式标识符来指示要使用的格式

0 篇笔记 写笔记

作者信息
站长漫谈
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!