直接X 11锯齿状边缘
Direct X 11 jagged edges
我正在Direct X 11中创建一个小型游戏引擎,它非常棒,但我注意到渲染时,3D对象和2D对象的边缘看起来都很粗糙。我以前来自Direct X 9,这个问题在那里并不存在。我想知道如何正确地启用抗锯齿或某种多重采样,这样我的纹理就不会出现锯齿状边缘。
swapChainDesc.SampleDesc.Count = 2;
swapChainDesc.SampleDesc.Quality = 0;
depthBufferDesc.SampleDesc.Count = 2;
depthBufferDesc.SampleDesc.Quality = 0;
这些是计数和质量的组合,但无论这里的设置如何,都没有视觉差异,否则Direct3D将无法创建设备。我的GPU不会覆盖任何内容,因为设置是为使用应用程序决定的任何内容而设计的。
除了为交换链的渲染目标、深度/模具缓冲区启用MSAA采样计数,并为相关视图(D3D11_TEX2DMS_RTV
、D3D11_DSV_DIMENSION_TEXTURE2DMS
)使用正确的值外,您还需要在光栅化器状态中将D3D11_RASTERIZER_DESC.MultisampleEnable
实际设置为TRUE:
CD3D11_RASTERIZER_DESC rastDesc(D3D11_FILL_SOLID, D3D11_CULL_NONE, FALSE,
D3D11_DEFAULT_DEPTH_BIAS, D3D11_DEFAULT_DEPTH_BIAS_CLAMP,
D3D11_DEFAULT_SLOPE_SCALED_DEPTH_BIAS, TRUE, FALSE,
TRUE /*this is MSAA enable*/, FALSE);
有关更详细的示例,请参见DirectX工具包的"简单渲染"课程。
使用Direct3D功能级别10.1或更高版本,硬件将支持4个MSAA。Direct3D Feature Level 11.0或更高版本的硬件将支持4倍和8倍MSAA。一切都应支持2倍MSAA。
您可以调用ResolveSubresource来应用MSAA过滤
例如:pDeviceContext->ResolveSubresource(DstText,0,MultisampledTexture,0,Multi-sampledTexture.Format);
DstTexture经过过滤,应该减少或消除楼梯视觉失真。
相关文章:
- 宽度为奇数的16位纹理为片状
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 如何获取边缘窗口句柄 (HWND)?
- 如何解析表示树状数据结构的字符串
- 提升如何在图形可视化中写入边缘的权重?
- 在 c++ 中使用 Tensorflow Lite 在边缘 TPU 上运行"mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite"时出现问题
- 分数背包边缘箱
- 将文本文件解析为树状数据结构
- 应用程序无法找到铬边缘浏览器
- MFC 中的抗锯齿
- 从锯齿状数组读取
- 问题创建和返回锯齿状阵列(错误std :: bad_array_new_length)
- SFML在Pong Clone(OS X)中进行一些锯齿状的性能
- c#中的c++锯齿状数组切片
- 多种类型的锯齿状阵列
- 直接X 11锯齿状边缘
- 类的锯齿状数组
- 如何在SWIG中将矢量的锯齿状C++向量转换为Python
- 多维锯齿状地图
- 平滑圆形面膜.去除锯齿状边缘