Ниже немного полезной (по крайней мере, для меня) инфы по RW PS2.
Некоторые особенности Texture Native:
BOMBER.TXD, BUSKER1.TXD, BUSKER2.TXD, BUSKER3.TXD, BUSKER4.TXD, G.TXD, PLASTER.TXD, ROBBER.TXD, STU_MAN.TXD, STU_WOM.TXD
stride, nOffsetX, nOffsetY, cType, cFlags, privateFlags, cFormat
(см. структуры внизу).enum RwRasterFormat { rwRASTERFORMATDEFAULT = 0x0000, /* Whatever the hardware likes best */ rwRASTERFORMAT1555 = 0x0100, /**<l16 bits - 1 bit alpha, 5 bits red, green and blue */ rwRASTERFORMAT565 = 0x0200, /**<16 bits - 5 bits red and blue, 6 bits green */ rwRASTERFORMAT4444 = 0x0300, /**<16 bits - 4 bits per component */ rwRASTERFORMATLUM8 = 0x0400, /**<Gray scale */ rwRASTERFORMAT8888 = 0x0500, /**<32 bits - 8 bits per component */ rwRASTERFORMAT888 = 0x0600, /**<24 bits - 8 bits per component */ rwRASTERFORMAT16 = 0x0700, /**<16 bits - undefined: useful for things like Z buffers */ rwRASTERFORMAT24 = 0x0800, /**<24 bits - undefined: useful for things like Z buffers */ rwRASTERFORMAT32 = 0x0900, /**<32 bits - undefined: useful for things like Z buffers */ rwRASTERFORMAT555 = 0x0a00, /**<16 bits - 5 bits red, green and blue */ rwRASTERFORMATAUTOMIPMAP = 0x1000, /**<RenderWare generated the mip levels */ rwRASTERFORMATPAL8 = 0x2000, /**<8 bit palettised */ rwRASTERFORMATPAL4 = 0x4000, /**<4 bit palettised */ rwRASTERFORMATMIPMAP = 0x8000, /**<Mip mapping on */ rwRASTERFORMATPIXELFORMATMASK = 0x0f00, /**<The pixel color format * (excluding palettised bits) */ rwRASTERFORMATMASK = 0xff00 /**<The whole format */ , rwRASTERFORMATFORCEENUMSIZEINT = RWFORCEENUMSIZEINT }; enum RwRasterPrivateFlag { rwRASTERGAMMACORRECTED = 0x01, rwRASTERPIXELLOCKEDREAD = 0x02, /* pixels are locked for reading */ rwRASTERPIXELLOCKEDWRITE = 0x04, /* pixels are locked for writing */ rwRASTERPALETTELOCKEDREAD = 0x08, /* palette is locked for reading */ rwRASTERPALETTELOCKEDWRITE = 0x10, /* palette is locked for writing */ rwRASTERPIXELLOCKEDRAW = 0x20, /* the pixels are in platform specific format, used in combination with rwRASTERPIXELLOCKEDREAD & rwRASTERPIXELLOCKEDWRITE */ rwRASTERPRIVATEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT };
struct RwRaster { RwRaster *parent; /* Top level raster if a sub raster */ RwUInt8 *cpPixels; /* Pixel pointer when locked */ RwUInt8 *palette; /* Raster palette */ RwInt32 width, height, depth; /* Dimensions of raster */ RwInt32 stride; /* Lines bytes of raster */ RwInt16 nOffsetX, nOffsetY; /* Sub raster offset */ RwUInt8 cType; /* Type of raster */ RwUInt8 cFlags; /* Raster flags */ RwUInt8 privateFlags; /* Raster private flags */ RwUInt8 cFormat; /* Raster format */ RwUInt8 *originalPixels; RwInt32 originalWidth; RwInt32 originalHeight; RwInt32 originalStride; };
enum RwImageFlag { rwNAIMAGEFLAG = 0x00, rwIMAGEALLOCATED = 0x1, rwIMAGEGAMMACORRECTED = 0x2, rwIMAGEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT };
struct RwRGBA { RwUInt8 red; /**< red component */ RwUInt8 green; /**< green component */ RwUInt8 blue; /**< blue component */ RwUInt8 alpha; /**< alpha component */ };
enum RwTextureAddressMode { rwTEXTUREADDRESSNATEXTUREADDRESS = 0, rwTEXTUREADDRESSWRAP, /**<UV wraps (tiles) */ rwTEXTUREADDRESSMIRROR, /**<Alternate UV is flipped */ rwTEXTUREADDRESSCLAMP, /**<UV is clamped to 0-1 */ rwTEXTUREADDRESSBORDER, /**<Border color takes effect outside of 0-1 */ rwTEXTUREADDRESSMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT };
enum RwPlatformID { rwID_PCD3D7 = 1, rwID_PCOGL, rwID_MAC, rwID_PS2, rwID_XBOX, rwID_GAMECUBE, rwID_SOFTRAS, rwID_PCD3D8, rwPLATFROMIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT };