diff --git a/src/Common/Image/D3DFormat.h b/src/Common/Image/D3DFormat.h index cf03fb746..90f671cfb 100644 --- a/src/Common/Image/D3DFormat.h +++ b/src/Common/Image/D3DFormat.h @@ -2,107 +2,111 @@ #include "Utils/FileUtils.h" -enum D3DFORMAT +// This is a redefinition to make this enum available on platforms without DirectX headers +namespace oat { - D3DFMT_UNKNOWN = 0, - - D3DFMT_R8G8B8 = 20, - D3DFMT_A8R8G8B8 = 21, - D3DFMT_X8R8G8B8 = 22, - D3DFMT_R5G6B5 = 23, - D3DFMT_X1R5G5B5 = 24, - D3DFMT_A1R5G5B5 = 25, - D3DFMT_A4R4G4B4 = 26, - D3DFMT_R3G3B2 = 27, - D3DFMT_A8 = 28, - D3DFMT_A8R3G3B2 = 29, - D3DFMT_X4R4G4B4 = 30, - D3DFMT_A2B10G10R10 = 31, - D3DFMT_A8B8G8R8 = 32, - D3DFMT_X8B8G8R8 = 33, - D3DFMT_G16R16 = 34, - D3DFMT_A2R10G10B10 = 35, - D3DFMT_A16B16G16R16 = 36, - - D3DFMT_A8P8 = 40, - D3DFMT_P8 = 41, - - D3DFMT_L8 = 50, - D3DFMT_A8L8 = 51, - D3DFMT_A4L4 = 52, - - D3DFMT_V8U8 = 60, - D3DFMT_L6V5U5 = 61, - D3DFMT_X8L8V8U8 = 62, - D3DFMT_Q8W8V8U8 = 63, - D3DFMT_V16U16 = 64, - D3DFMT_A2W10V10U10 = 67, - - D3DFMT_UYVY = FileUtils::MakeMagic32('U', 'Y', 'V', 'Y'), - D3DFMT_R8G8_B8G8 = FileUtils::MakeMagic32('R', 'G', 'B', 'G'), - D3DFMT_YUY2 = FileUtils::MakeMagic32('Y', 'U', 'Y', '2'), - D3DFMT_G8R8_G8B8 = FileUtils::MakeMagic32('G', 'R', 'G', 'B'), - D3DFMT_DXT1 = FileUtils::MakeMagic32('D', 'X', 'T', '1'), - D3DFMT_DXT2 = FileUtils::MakeMagic32('D', 'X', 'T', '2'), - D3DFMT_DXT3 = FileUtils::MakeMagic32('D', 'X', 'T', '3'), - D3DFMT_DXT4 = FileUtils::MakeMagic32('D', 'X', 'T', '4'), - D3DFMT_DXT5 = FileUtils::MakeMagic32('D', 'X', 'T', '5'), - - D3DFMT_D16_LOCKABLE = 70, - D3DFMT_D32 = 71, - D3DFMT_D15S1 = 73, - D3DFMT_D24S8 = 75, - D3DFMT_D24X8 = 77, - D3DFMT_D24X4S4 = 79, - D3DFMT_D16 = 80, - - D3DFMT_D32F_LOCKABLE = 82, - D3DFMT_D24FS8 = 83, - - /* D3D9Ex only -- */ - - /* Z-Stencil formats valid for CPU access */ - D3DFMT_D32_LOCKABLE = 84, - D3DFMT_S8_LOCKABLE = 85, - - /* -- D3D9Ex only */ - - D3DFMT_L16 = 81, - - D3DFMT_VERTEXDATA = 100, - D3DFMT_INDEX16 = 101, - D3DFMT_INDEX32 = 102, - - D3DFMT_Q16W16V16U16 = 110, - - D3DFMT_MULTI2_ARGB8 = FileUtils::MakeMagic32('M', 'E', 'T', '1'), - - // Floating point surface formats - - // s10e5 formats (16-bits per channel) - D3DFMT_R16F = 111, - D3DFMT_G16R16F = 112, - D3DFMT_A16B16G16R16F = 113, - - // IEEE s23e8 formats (32-bits per channel) - D3DFMT_R32F = 114, - D3DFMT_G32R32F = 115, - D3DFMT_A32B32G32R32F = 116, - - D3DFMT_CxV8U8 = 117, - - /* D3D9Ex only -- */ - - // Monochrome 1 bit per pixel format - D3DFMT_A1 = 118, - - // 2.8 biased fixed point - D3DFMT_A2B10G10R10_XR_BIAS = 119, - - // Binary format indicating that the data has no inherent type - D3DFMT_BINARYBUFFER = 199, - - /* -- D3D9Ex only */ - - D3DFMT_FORCE_DWORD = 0x7fffffff -}; + enum D3DFORMAT + { + D3DFMT_UNKNOWN = 0, + + D3DFMT_R8G8B8 = 20, + D3DFMT_A8R8G8B8 = 21, + D3DFMT_X8R8G8B8 = 22, + D3DFMT_R5G6B5 = 23, + D3DFMT_X1R5G5B5 = 24, + D3DFMT_A1R5G5B5 = 25, + D3DFMT_A4R4G4B4 = 26, + D3DFMT_R3G3B2 = 27, + D3DFMT_A8 = 28, + D3DFMT_A8R3G3B2 = 29, + D3DFMT_X4R4G4B4 = 30, + D3DFMT_A2B10G10R10 = 31, + D3DFMT_A8B8G8R8 = 32, + D3DFMT_X8B8G8R8 = 33, + D3DFMT_G16R16 = 34, + D3DFMT_A2R10G10B10 = 35, + D3DFMT_A16B16G16R16 = 36, + + D3DFMT_A8P8 = 40, + D3DFMT_P8 = 41, + + D3DFMT_L8 = 50, + D3DFMT_A8L8 = 51, + D3DFMT_A4L4 = 52, + + D3DFMT_V8U8 = 60, + D3DFMT_L6V5U5 = 61, + D3DFMT_X8L8V8U8 = 62, + D3DFMT_Q8W8V8U8 = 63, + D3DFMT_V16U16 = 64, + D3DFMT_A2W10V10U10 = 67, + + D3DFMT_UYVY = FileUtils::MakeMagic32('U', 'Y', 'V', 'Y'), + D3DFMT_R8G8_B8G8 = FileUtils::MakeMagic32('R', 'G', 'B', 'G'), + D3DFMT_YUY2 = FileUtils::MakeMagic32('Y', 'U', 'Y', '2'), + D3DFMT_G8R8_G8B8 = FileUtils::MakeMagic32('G', 'R', 'G', 'B'), + D3DFMT_DXT1 = FileUtils::MakeMagic32('D', 'X', 'T', '1'), + D3DFMT_DXT2 = FileUtils::MakeMagic32('D', 'X', 'T', '2'), + D3DFMT_DXT3 = FileUtils::MakeMagic32('D', 'X', 'T', '3'), + D3DFMT_DXT4 = FileUtils::MakeMagic32('D', 'X', 'T', '4'), + D3DFMT_DXT5 = FileUtils::MakeMagic32('D', 'X', 'T', '5'), + + D3DFMT_D16_LOCKABLE = 70, + D3DFMT_D32 = 71, + D3DFMT_D15S1 = 73, + D3DFMT_D24S8 = 75, + D3DFMT_D24X8 = 77, + D3DFMT_D24X4S4 = 79, + D3DFMT_D16 = 80, + + D3DFMT_D32F_LOCKABLE = 82, + D3DFMT_D24FS8 = 83, + + /* D3D9Ex only -- */ + + /* Z-Stencil formats valid for CPU access */ + D3DFMT_D32_LOCKABLE = 84, + D3DFMT_S8_LOCKABLE = 85, + + /* -- D3D9Ex only */ + + D3DFMT_L16 = 81, + + D3DFMT_VERTEXDATA = 100, + D3DFMT_INDEX16 = 101, + D3DFMT_INDEX32 = 102, + + D3DFMT_Q16W16V16U16 = 110, + + D3DFMT_MULTI2_ARGB8 = FileUtils::MakeMagic32('M', 'E', 'T', '1'), + + // Floating point surface formats + + // s10e5 formats (16-bits per channel) + D3DFMT_R16F = 111, + D3DFMT_G16R16F = 112, + D3DFMT_A16B16G16R16F = 113, + + // IEEE s23e8 formats (32-bits per channel) + D3DFMT_R32F = 114, + D3DFMT_G32R32F = 115, + D3DFMT_A32B32G32R32F = 116, + + D3DFMT_CxV8U8 = 117, + + /* D3D9Ex only -- */ + + // Monochrome 1 bit per pixel format + D3DFMT_A1 = 118, + + // 2.8 biased fixed point + D3DFMT_A2B10G10R10_XR_BIAS = 119, + + // Binary format indicating that the data has no inherent type + D3DFMT_BINARYBUFFER = 199, + + /* -- D3D9Ex only */ + + D3DFMT_FORCE_DWORD = 0x7fffffff + }; +} // namespace oat diff --git a/src/Common/Image/ImageFormat.cpp b/src/Common/Image/ImageFormat.cpp index ed043cbea..7a3d24b5e 100644 --- a/src/Common/Image/ImageFormat.cpp +++ b/src/Common/Image/ImageFormat.cpp @@ -1,6 +1,6 @@ #include "ImageFormat.h" -ImageFormat::ImageFormat(const ImageFormatId id, const D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat) +ImageFormat::ImageFormat(const ImageFormatId id, const oat::D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat) : m_id(id), m_d3d_format(d3dFormat), m_dxgi_format(dxgiFormat) @@ -12,7 +12,7 @@ ImageFormatId ImageFormat::GetId() const return m_id; } -D3DFORMAT ImageFormat::GetD3DFormat() const +oat::D3DFORMAT ImageFormat::GetD3DFormat() const { return m_d3d_format; } @@ -23,7 +23,7 @@ DXGI_FORMAT ImageFormat::GetDxgiFormat() const } ImageFormatUnsigned::ImageFormatUnsigned(const ImageFormatId id, - const D3DFORMAT d3dFormat, + const oat::D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, const unsigned bitsPerPixel, const unsigned rOffset, @@ -78,7 +78,7 @@ size_t ImageFormatUnsigned::GetSizeOfMipLevel(const unsigned mipLevel, const uns } ImageFormatBlockCompressed::ImageFormatBlockCompressed( - const ImageFormatId id, const D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, const unsigned blockSize, const unsigned bitsPerBlock) + const ImageFormatId id, const oat::D3DFORMAT d3dFormat, const DXGI_FORMAT dxgiFormat, const unsigned blockSize, const unsigned bitsPerBlock) : ImageFormat(id, d3dFormat, dxgiFormat), m_block_size(blockSize), m_bits_per_block(bitsPerBlock) @@ -140,22 +140,23 @@ bool ImageFormatUnsigned::HasA() const return m_a_size > 0; } -const ImageFormatUnsigned ImageFormat::FORMAT_R8_G8_B8(ImageFormatId::R8_G8_B8, D3DFMT_R8G8B8, DXGI_FORMAT_UNKNOWN, 24, 0, 8, 8, 8, 16, 8, 0, 0); -const ImageFormatUnsigned ImageFormat::FORMAT_B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, D3DFMT_X8R8G8B8, DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0); +const ImageFormatUnsigned ImageFormat::FORMAT_R8_G8_B8(ImageFormatId::R8_G8_B8, oat::D3DFMT_R8G8B8, DXGI_FORMAT_UNKNOWN, 24, 0, 8, 8, 8, 16, 8, 0, 0); const ImageFormatUnsigned - ImageFormat::FORMAT_R8_G8_B8_A8(ImageFormatId::R8_G8_B8_A8, D3DFMT_A8B8G8R8, DXGI_FORMAT_R8G8B8A8_UNORM, 32, 0, 8, 8, 8, 16, 8, 24, 8); + ImageFormat::FORMAT_B8_G8_R8_X8(ImageFormatId::B8_G8_R8_X8, oat::D3DFMT_X8R8G8B8, DXGI_FORMAT_B8G8R8X8_UNORM, 32, 16, 8, 8, 8, 0, 8, 0, 0); const ImageFormatUnsigned - ImageFormat::FORMAT_B8_G8_R8_A8(ImageFormatId::B8_G8_R8_A8, D3DFMT_A8R8G8B8, DXGI_FORMAT_B8G8R8A8_UNORM, 32, 16, 8, 8, 8, 0, 8, 24, 8); -const ImageFormatUnsigned ImageFormat::FORMAT_A8(ImageFormatId::A8, D3DFMT_A8, DXGI_FORMAT_A8_UNORM, 8, 0, 0, 0, 0, 0, 0, 0, 8); + ImageFormat::FORMAT_R8_G8_B8_A8(ImageFormatId::R8_G8_B8_A8, oat::D3DFMT_A8B8G8R8, DXGI_FORMAT_R8G8B8A8_UNORM, 32, 0, 8, 8, 8, 16, 8, 24, 8); +const ImageFormatUnsigned + ImageFormat::FORMAT_B8_G8_R8_A8(ImageFormatId::B8_G8_R8_A8, oat::D3DFMT_A8R8G8B8, DXGI_FORMAT_B8G8R8A8_UNORM, 32, 16, 8, 8, 8, 0, 8, 24, 8); +const ImageFormatUnsigned ImageFormat::FORMAT_A8(ImageFormatId::A8, oat::D3DFMT_A8, DXGI_FORMAT_A8_UNORM, 8, 0, 0, 0, 0, 0, 0, 0, 8); const ImageFormatUnsigned ImageFormat::FORMAT_R16_G16_B16_A16_FLOAT( - ImageFormatId::R16_G16_B16_A16_FLOAT, D3DFMT_A16B16G16R16F, DXGI_FORMAT_R16G16B16A16_FLOAT, 128, 0, 0, 0, 0, 0, 0, 0, 8); -const ImageFormatUnsigned ImageFormat::FORMAT_R8(ImageFormatId::R8, D3DFMT_L8, DXGI_FORMAT_R8_UNORM, 8, 0, 8, 0, 0, 0, 0, 0, 0); -const ImageFormatUnsigned ImageFormat::FORMAT_R8_A8(ImageFormatId::R8_A8, D3DFMT_A8L8, DXGI_FORMAT_UNKNOWN, 16, 0, 8, 0, 0, 0, 0, 8, 8); -const ImageFormatBlockCompressed ImageFormat::FORMAT_BC1(ImageFormatId::BC1, D3DFMT_DXT1, DXGI_FORMAT_BC1_UNORM, 4, 64); -const ImageFormatBlockCompressed ImageFormat::FORMAT_BC2(ImageFormatId::BC2, D3DFMT_DXT3, DXGI_FORMAT_BC2_UNORM, 4, 128); -const ImageFormatBlockCompressed ImageFormat::FORMAT_BC3(ImageFormatId::BC3, D3DFMT_DXT5, DXGI_FORMAT_BC3_UNORM, 4, 128); -const ImageFormatBlockCompressed ImageFormat::FORMAT_BC4(ImageFormatId::BC4, D3DFMT_UNKNOWN, DXGI_FORMAT_BC4_UNORM, 4, 64); -const ImageFormatBlockCompressed ImageFormat::FORMAT_BC5(ImageFormatId::BC5, D3DFMT_UNKNOWN, DXGI_FORMAT_BC5_UNORM, 4, 128); + ImageFormatId::R16_G16_B16_A16_FLOAT, oat::D3DFMT_A16B16G16R16F, DXGI_FORMAT_R16G16B16A16_FLOAT, 128, 0, 0, 0, 0, 0, 0, 0, 8); +const ImageFormatUnsigned ImageFormat::FORMAT_R8(ImageFormatId::R8, oat::D3DFMT_L8, DXGI_FORMAT_R8_UNORM, 8, 0, 8, 0, 0, 0, 0, 0, 0); +const ImageFormatUnsigned ImageFormat::FORMAT_R8_A8(ImageFormatId::R8_A8, oat::D3DFMT_A8L8, DXGI_FORMAT_UNKNOWN, 16, 0, 8, 0, 0, 0, 0, 8, 8); +const ImageFormatBlockCompressed ImageFormat::FORMAT_BC1(ImageFormatId::BC1, oat::D3DFMT_DXT1, DXGI_FORMAT_BC1_UNORM, 4, 64); +const ImageFormatBlockCompressed ImageFormat::FORMAT_BC2(ImageFormatId::BC2, oat::D3DFMT_DXT3, DXGI_FORMAT_BC2_UNORM, 4, 128); +const ImageFormatBlockCompressed ImageFormat::FORMAT_BC3(ImageFormatId::BC3, oat::D3DFMT_DXT5, DXGI_FORMAT_BC3_UNORM, 4, 128); +const ImageFormatBlockCompressed ImageFormat::FORMAT_BC4(ImageFormatId::BC4, oat::D3DFMT_UNKNOWN, DXGI_FORMAT_BC4_UNORM, 4, 64); +const ImageFormatBlockCompressed ImageFormat::FORMAT_BC5(ImageFormatId::BC5, oat::D3DFMT_UNKNOWN, DXGI_FORMAT_BC5_UNORM, 4, 128); const ImageFormat* const ImageFormat::ALL_FORMATS[static_cast(ImageFormatId::MAX)]{ &FORMAT_R8_G8_B8, diff --git a/src/Common/Image/ImageFormat.h b/src/Common/Image/ImageFormat.h index 66b0435a4..e6c21e466 100644 --- a/src/Common/Image/ImageFormat.h +++ b/src/Common/Image/ImageFormat.h @@ -39,17 +39,17 @@ class ImageFormatBlockCompressed; class ImageFormat { ImageFormatId m_id; - D3DFORMAT m_d3d_format; + oat::D3DFORMAT m_d3d_format; DXGI_FORMAT m_dxgi_format; protected: - ImageFormat(ImageFormatId id, D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat); + ImageFormat(ImageFormatId id, oat::D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat); public: virtual ~ImageFormat() = default; ImageFormatId GetId() const; - D3DFORMAT GetD3DFormat() const; + oat::D3DFORMAT GetD3DFormat() const; DXGI_FORMAT GetDxgiFormat() const; virtual ImageFormatType GetType() const = 0; @@ -86,7 +86,7 @@ class ImageFormatUnsigned final : public ImageFormat unsigned m_a_size; ImageFormatUnsigned(ImageFormatId id, - D3DFORMAT d3dFormat, + oat::D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat, unsigned bitsPerPixel, unsigned rOffset, @@ -114,7 +114,7 @@ class ImageFormatBlockCompressed final : public ImageFormat unsigned m_block_size; unsigned m_bits_per_block; - ImageFormatBlockCompressed(ImageFormatId id, D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat, unsigned blockSize, unsigned bitsPerBlock); + ImageFormatBlockCompressed(ImageFormatId id, oat::D3DFORMAT d3dFormat, DXGI_FORMAT dxgiFormat, unsigned blockSize, unsigned bitsPerBlock); ImageFormatType GetType() const override; size_t GetPitch(unsigned mipLevel, unsigned width) const override; diff --git a/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp b/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp index 4cafb0faa..ba76c2786 100644 --- a/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp +++ b/src/ObjLoading/Game/IW3/ObjLoaderIW3.cpp @@ -88,7 +88,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone) else textureLoader.Type(TextureType::T_2D); - textureLoader.Format(static_cast(loadDef->format)); + textureLoader.Format(static_cast(loadDef->format)); textureLoader.HasMipMaps(!(loadDef->flags & iwi6::IMG_FLAG_NOMIPMAPS)); Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data); diff --git a/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp b/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp index 95ff6fff9..f35df1311 100644 --- a/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp +++ b/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp @@ -130,7 +130,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone) else textureLoader.Type(TextureType::T_2D); - textureLoader.Format(static_cast(loadDef->format)); + textureLoader.Format(static_cast(loadDef->format)); textureLoader.HasMipMaps(!(loadDef->flags & iwi8::IMG_FLAG_NOMIPMAPS)); Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data); diff --git a/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp b/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp index c81ebeab1..39cff848d 100644 --- a/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp +++ b/src/ObjLoading/Game/IW5/ObjLoaderIW5.cpp @@ -106,7 +106,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone) else textureLoader.Type(TextureType::T_2D); - textureLoader.Format(static_cast(loadDef->format)); + textureLoader.Format(static_cast(loadDef->format)); textureLoader.HasMipMaps(!(loadDef->flags & iwi8::IMG_FLAG_NOMIPMAPS)); Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data); diff --git a/src/ObjLoading/Game/T5/ObjLoaderT5.cpp b/src/ObjLoading/Game/T5/ObjLoaderT5.cpp index 01a42adbc..ee43e1a55 100644 --- a/src/ObjLoading/Game/T5/ObjLoaderT5.cpp +++ b/src/ObjLoading/Game/T5/ObjLoaderT5.cpp @@ -95,7 +95,7 @@ void ObjLoader::LoadImageFromLoadDef(GfxImage* image, Zone* zone) else textureLoader.Type(TextureType::T_2D); - textureLoader.Format(static_cast(loadDef->format)); + textureLoader.Format(static_cast(loadDef->format)); textureLoader.HasMipMaps(!(loadDef->flags & iwi13::IMG_FLAG_NOMIPMAPS)); Texture* loadedTexture = textureLoader.LoadTexture(image->texture.loadDef->data); diff --git a/src/ObjLoading/Image/Dx9TextureLoader.cpp b/src/ObjLoading/Image/Dx9TextureLoader.cpp index bd4171dfe..1fe4f60d1 100644 --- a/src/ObjLoading/Image/Dx9TextureLoader.cpp +++ b/src/ObjLoading/Image/Dx9TextureLoader.cpp @@ -4,7 +4,7 @@ Dx9TextureLoader::Dx9TextureLoader(MemoryManager* memoryManager) : m_memory_manager(memoryManager), - m_format(D3DFMT_UNKNOWN), + m_format(oat::D3DFMT_UNKNOWN), m_type(TextureType::T_2D), m_has_mip_maps(false), m_width(1u), @@ -24,7 +24,7 @@ const ImageFormat* Dx9TextureLoader::GetFormatForDx9Format() const return nullptr; } -Dx9TextureLoader& Dx9TextureLoader::Format(const D3DFORMAT format) +Dx9TextureLoader& Dx9TextureLoader::Format(const oat::D3DFORMAT format) { m_format = format; return *this; diff --git a/src/ObjLoading/Image/Dx9TextureLoader.h b/src/ObjLoading/Image/Dx9TextureLoader.h index 0ad0dbae2..441317939 100644 --- a/src/ObjLoading/Image/Dx9TextureLoader.h +++ b/src/ObjLoading/Image/Dx9TextureLoader.h @@ -10,7 +10,7 @@ class Dx9TextureLoader { MemoryManager* m_memory_manager; - D3DFORMAT m_format; + oat::D3DFORMAT m_format; TextureType m_type; bool m_has_mip_maps; size_t m_width; @@ -22,7 +22,7 @@ class Dx9TextureLoader public: explicit Dx9TextureLoader(MemoryManager* memoryManager); - Dx9TextureLoader& Format(D3DFORMAT format); + Dx9TextureLoader& Format(oat::D3DFORMAT format); Dx9TextureLoader& Type(TextureType textureType); Dx9TextureLoader& HasMipMaps(bool hasMipMaps); Dx9TextureLoader& Width(size_t width);