Ниже немного полезной (по крайней мере, для меня) инфы по 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.TXDstride, 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
};