Archived

This topic is now archived and is closed to further replies.

TheMummy

How to load .dds files

Recommended Posts

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 ..

Share this post


Link to post
Share on other sites
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;

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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 !

Share this post


Link to post
Share on other sites