diff --git a/src/QD3D/3DMFParser.cpp b/src/QD3D/3DMFParser.cpp index ef2b86e..75be008 100644 --- a/src/QD3D/3DMFParser.cpp +++ b/src/QD3D/3DMFParser.cpp @@ -510,6 +510,7 @@ TQ3Pixmap* Q3MetaFileParser::ParsePixmap(uint32_t chunkType, uint32_t chunkSize) case kQ3PixelTypeARGB16: printf(" ARGB16"); break; case kQ3PixelTypeRGB16_565: printf(" RGB16_565"); break; case kQ3PixelTypeRGB24: printf(" RGB24"); break; + case kQ3PixelTypeRGBA32: printf(" RGBA32"); break; default: printf(" UnknownPixelType"); break; } #endif diff --git a/src/QD3D/QD3D.cpp b/src/QD3D/QD3D.cpp index 3df2945..0b21fe6 100644 --- a/src/QD3D/QD3D.cpp +++ b/src/QD3D/QD3D.cpp @@ -123,6 +123,16 @@ void Q3Pixmap_ApplyEdgePadding(TQ3Pixmap* pm) pm->byteOrder==kQ3EndianNative? 0xFF000000: 0x000000FF); break; + case kQ3PixelTypeRGBA32: + Assert(pm->rowBytes >= pm->width * 4, "EdgePadding RGBA32: incorrect rowBytes"); + _EdgePadding( + (uint32_t *) pm->image, + pm->width, + pm->height, + pm->rowBytes, + pm->byteOrder==kQ3EndianNative? 0x000000FF: 0xFF000000); + break; + case kQ3PixelTypeRGB16: case kQ3PixelTypeRGB16_565: case kQ3PixelTypeRGB24: diff --git a/src/QD3D/QD3D.h b/src/QD3D/QD3D.h index 967a0db..295f631 100644 --- a/src/QD3D/QD3D.h +++ b/src/QD3D/QD3D.h @@ -91,6 +91,9 @@ typedef enum /// 8 bits for red, green, and blue. No alpha byte. kQ3PixelTypeRGB24 = 5, + /// 8 bits for red, green, and blue, and alpha (Pomme extension, not in real 3DMF files) + kQ3PixelTypeRGBA32 = 6, + kQ3PixelTypeUnknown = 200, kQ3PixelTypeSize32 = 0xFFFFFFFF } TQ3PixelType; @@ -374,4 +377,4 @@ void Q3TriMeshData_SubdivideTriangles(TQ3TriMeshData* src); #ifdef __cplusplus } -#endif \ No newline at end of file +#endif