2

在 DirectX 9 中它曾经是这样的: d3dDevice->SetRenderState(D3DRS_WRAP0, D3DWRAPCOORD_0);

这样,您可以更改 Direct3D 感知 u 方向和 v 方向纹理坐标之间最短路径的方式。对于球体和圆柱体纹理包裹非常有用。

一个很好的解释在这里https://docs.microsoft.com/en-us/windows/desktop/direct3d9/texture-wrapping

但是经过大量研究后,我很难弄清楚如何在 DirectX11 中获得相同的结果,因为它现在使用多个渲染状态,而没有一个似乎具有这样的功能。

4

1 回答 1

1

此功能未在 Direct3D 11 中实现。您应该手动将模型坐标映射到纹理坐标。

一种方法是在希望包裹纹理的接缝线上创建边缘,并独立处理接缝两侧的模型面。

另一种方法是使用 [0; 之外的纹理坐标。1] 范围以及一种寻址技术(您在采样器状态描述结构中指定)。枚举中列举了这些技术D3D11_TEXTURE_ADDRESS_MODEhttps://docs.microsoft.com/en-us/windows/desktop/api/d3d11/ne-d3d11-d3d11_texture_address_mode)。但是在 d3d11 中没有“最短路径”纹理包装的选项,就像您提供的 MSDN 文章中描述的那样。

于 2019-01-31T16:51:10.967 回答