57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
class DDS:
|
|
def __init__(self, data:bytes, height:int, width:int) -> None:
|
|
self.data = bytearray(b'\x44\x44\x53\x20') # DDS magic
|
|
# Header
|
|
# Size
|
|
self.data.extend((124).to_bytes(4, "little"))
|
|
#flags
|
|
self.data.extend(b'\x07\x10\x0A\x00')
|
|
#height
|
|
self.data.extend((height).to_bytes(4, "little"))
|
|
#width
|
|
self.data.extend((width).to_bytes(4, "little"))
|
|
#pitchOrLinearSize
|
|
self.data.extend((height*width).to_bytes(4, "little"))
|
|
#depth
|
|
self.data.extend((1).to_bytes(4, "little"))
|
|
#mipMapCount
|
|
self.data.extend((1).to_bytes(4, "little"))
|
|
#reserved
|
|
self.data.extend((0).to_bytes(0x2C, "little"))
|
|
|
|
#dds pixel format
|
|
#size
|
|
self.data.extend((32).to_bytes(4, "little"))
|
|
#flags
|
|
self.data.extend((4).to_bytes(4, "little"))
|
|
#fourCC
|
|
self.data.extend((b'\x44\x58\x31\x30'))
|
|
#RGBBitCount
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
#masks
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
|
|
#caps
|
|
self.data.extend((0x1000).to_bytes(4, "little"))
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
#reserved
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
|
|
#dds Header DXT10
|
|
#DXGI Format
|
|
self.data.extend((99).to_bytes(4, "little"))
|
|
#resourceDimension
|
|
self.data.extend((3).to_bytes(4, "little"))
|
|
#miscFlag
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
#arraySize
|
|
self.data.extend((1).to_bytes(4, "little"))
|
|
#miscFlag2
|
|
self.data.extend((0).to_bytes(4, "little"))
|
|
self.data.extend(data)
|
|
pass |