How to load .dds files

Started by
3 comments, last by TheMummy 22 years, 6 months ago
Hi there, I want to use S3TC in OpenGL ... Since Nvidia provides a Photoshop plugin which saves DXT5 mipmaps, I thought about loading these dds files and convert them into my own proprietary texture format ... But I don''t have the direct draw headers and I don''t want download them, well but I need the typedef of DDSURFACEDESC2. Could someone post the typedef here ?? Are there any special pitfalls in loading dds files ? Thanks in advance ..
Advertisement
Does this help? Ripped it right from ddraw.h for ya.
typedef struct _DDSURFACEDESC2{    DWORD               dwSize;                 // size of the DDSURFACEDESC structure    DWORD               dwFlags;                // determines what fields are valid    DWORD               dwHeight;               // height of surface to be created    DWORD               dwWidth;                // width of input surface    union    {        LONG            lPitch;                 // distance to start of next line (return value only)        DWORD           dwLinearSize;           // Formless late-allocated optimized surface size    } DUMMYUNIONNAMEN(1);    union    {        DWORD           dwBackBufferCount;      // number of back buffers requested        DWORD           dwDepth;                // the depth if this is a volume texture     } DUMMYUNIONNAMEN(5);    union    {        DWORD           dwMipMapCount;          // number of mip-map levels requestde                                                // dwZBufferBitDepth removed, use ddpfPixelFormat one instead        DWORD           dwRefreshRate;          // refresh rate (used when display mode is described)        DWORD           dwSrcVBHandle;          // The source used in VB::Optimize    } DUMMYUNIONNAMEN(2);    DWORD               dwAlphaBitDepth;        // depth of alpha buffer requested    DWORD               dwReserved;             // reserved    LPVOID              lpSurface;              // pointer to the associated surface memory    union    {        DDCOLORKEY      ddckCKDestOverlay;      // color key for destination overlay use        DWORD           dwEmptyFaceColor;       // Physical color for empty cubemap faces    } DUMMYUNIONNAMEN(3);    DDCOLORKEY          ddckCKDestBlt;          // color key for destination blt use    DDCOLORKEY          ddckCKSrcOverlay;       // color key for source overlay use    DDCOLORKEY          ddckCKSrcBlt;           // color key for source blt use    union    {        DDPIXELFORMAT   ddpfPixelFormat;        // pixel format description of the surface        DWORD           dwFVF;                  // vertex format description of vertex buffers    } DUMMYUNIONNAMEN(4);    DDSCAPS2            ddsCaps;                // direct draw surface capabilities    DWORD               dwTextureStage;         // stage in multitexture cascade} DDSURFACEDESC2;typedef struct _DDSURFACEDESC2          FAR *LPDDSURFACEDESC2; 
Dirk =[Scarab]= Gerrits
Thank you !

Looks great! I will test it when I get home from University ...

mmm looks bigger than I thought ...
What is a DWORD ? Is it the same as four chars ?? or one int ??
and how big is one LONG ? and DDCOLORKEY and DDSCAP ... mmm

I have another question will these mipmaps loaded form the dds files work with other chips than Nvidias Geforce2... e.g. on ATIs Radeon ?

Edited by - TheMummy on October 22, 2001 5:50:13 AM
quote:What is a DWORD ? Is it the same as four chars ?? or one int ??
and how big is one LONG ? and DDCOLORKEY and DDSCAP ... mmm


A DWORD is an unsigned long which is 4 bytes big.
A LONG is a signed long which is also 4 bytes big.
The difference is that an unsigned long can have values 0 to 4,294,967,295 while a signed long can have values –2,147,483,648 to 2,147,483,647.
DDCOLORKEY and DDSCAPS are some more DirectDraw structures like DDSURFACEDESC2.

I have another question will these mipmaps loaded form the dds files work with other chips than Nvidias Geforce2... e.g. on ATIs Radeon ?

Well I can''t help you there. Sorry.
Dirk =[Scarab]= Gerrits
Ok ...
Now I just need the other structures ... *arg* ...

I think I should try to get the whole header ... can you send me the DirectX header with the type defs for all DDSURFACEDESC2 strucutres ...

Thank you, for your help !

This topic is closed to new replies.

Advertisement