在我的发动机,我有一个需要能够检测DXT1纹理有纹素与阿尔法0(例如切口,一个窗口框架)。这是容易对我的纹理压缩自己,但我不知道纹理都已经被压缩。

是有一个简单的方法来告诉从标题是否DDS图像中包含的阿尔法?

有帮助吗?

解决方案

我知道,有没有办法说从头。有一个DDPF_ALPHAPIXELS标志,但我不认为将获得设定基于什么是在像素数据。你会需要分析DXT1块,看看颜色,有0阿尔法在他们(作,确保检查颜色实际上是使用在方框,我也想).

其他提示

我同意接受的答案。你的工作可以由一位更容易由使用的"挤"库,以压缩块你。

http://www.sjbrown.co.uk/?code=squish

DDS是一个非常贫穷的包装DXT(或BTC)的数据。头将不会帮助你。普通的原始DXT1没有任何阿尔法。我相信d3d现在实际上解DXT1alpha虽然。每DXT1块看起来是这样的:color1(16位)color2(16位)指数(32bits)。如果16位color1值小于color2(只是一个uint16比较,没有任何幻想!) 这块没有阿尔法。否则它不会。所以回答你的问题:跳过头、读16位,阅读16位b,如果一个>b那里是阿尔法。否则跳32位和重复,直到eof.其他DXT格式,如DXT5总是拥有阿尔法。这是非常罕见的,人们依靠的DXT1阿尔法招,因为有些hw(英特尔..)不支持它的可靠性。

不,DDS头只使用阿尔法的标志,用于压缩的图像。我有一个类似的需要弄清,如果一个DXT1图像的使用1位阿尔法和经过长时间的寻找我碰到这种参考: https://msdn.microsoft.com/en-us/library/windows/desktop/bb147243(v=与85).aspx

基本上如果color_0 <=color_1然后有一种可能性的纹理中有1位的阿尔法。为了进一步验证,你需要检查下一个32位中的2位对,如果他们是11.然后继续为每个方框,如果没有找到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top