C ++:DirectX纹理未对齐/移位

时间:2016-10-07 16:52:42

标签: c++ directx directx-11

我正在尝试使用纹理渲染正方形。有谁知道为什么这个纹理似乎被移位或错位?

以下是它的外观:http://imgur.com/siCQXXT

imgur

以下是问题的解决方法:http://imgur.com/rj6tHcX

imgur

priority_queue

1 个答案:

答案 0 :(得分:1)

首先,您确认钳夹实验没有状态或几何问题,其次,您说您使用的是DDS图像,这是关键。

根据你的代码,图像是256宽度RGBA8,因为石头是1/8,它意味着它们覆盖32 * 4 = 128字节。足够接近,当你没有dx10块时,DDS header是124字节,它解释了为什么图像被偏移了。

您所要做的就是跳过标题并仅将图像数据传递给UpdateSubResource。我邀请您查看DDS reference以了解文件的布局,以便您可以读取大小,格式,正确跳到数据的开头,还可以利用DDS存储压缩格式,以及预先包含mip贴图,不要使用GenerateMips这是不好的做法。