DragonKnightOfBreeze / Paradox-Language-Support

IDEA Plugin: Paradox Language Support.
https://windea.icu/Paradox-Language-Support
MIT License
37 stars 4 forks source link

[Bug][0.9.8] 读取dds时,对于同类型的dds,有些成功有些失败。 #19

Closed huangchenguang123 closed 1 year ago

huangchenguang123 commented 1 year ago

本质上的原因时因为p社憨批dds文件导致的,dds文件头不对,虽然都带了DDSD_LINEARSIZE代表压缩,但是有些文件的dwPitchOrLinearSize是行大小,有些是整个文件的大小。

case: 1.读取D:\game\steam\steamapps\common\Stellaris\gfx\interface\icons\ship_parts\ship_part_archaeo_armor.dds失败 2.读取D:\game\steam\steamapps\common\Stellaris\gfx\interface\icons\ship_parts\ship_part_armor_1.dds成功

这两个文件都带了DDSD_LINEARSIZE,dwPitchOrLinearSize的值一个代表了行的大小,一个是全量的大小

DdsHeader{dwSize=124, dwFlags=[DDSD_CAPS, DDSD_HEIGHT, DDSD_WIDTH, DDSD_PIXELFORMAT, DDSD_LINEARSIZE], dwHeight=58, dwWidth=58, dwPitchOrLinearSize=13456, dwDepth=N/A, dwMipMapCount=N/A, dwReserved1=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ddspf=DdsPixelFormat{dwSize=32, dwFlags=[DDPF_ALPHAPIXELS, DDPF_RGB], dwFourCC="

DdsHeader{dwSize=124, dwFlags=[DDSD_CAPS, DDSD_HEIGHT, DDSD_WIDTH, DDSD_PIXELFORMAT, DDSD_LINEARSIZE], dwHeight=58, dwWidth=58, dwPitchOrLinearSize=232, dwDepth=N/A, dwMipMapCount=N/A, dwReserved1=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ddspf=DdsPixelFormat{dwSize=32, dwFlags=[DDPF_ALPHAPIXELS, DDPF_RGB], dwFourCC="

huangchenguang123 commented 1 year ago

image

bdata分配错误导致读取dds文件的时候没有读取cheng成功