Archived

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

simon_brown75

Voodoo 1 question...

Recommended Posts

I''ve recently added enumeration to a D3D program I''m writing. It works fine on a Voodoo 3, it even works on an old S3 Virge, but when I run the program on a second PC with a Voodoo Graphics (voodoo 1) board in, the textures go wrong. Instead of a stone wall and pebble floor I get huge blocks of yellow and blue. It''s definitely using the VG and the polygon shapes are correct, and I''m doing enumeration exactly as advised in the DX7 tutorials. Also i''ve tried plenty of different VG drivers and the VG works with the DX7 SDK sample programs. I''ve also tried different texture formats. All I can think of is that either an add-on board has to be treated differently, or maybe I have to set some setting in D3D differently because the VG will only work with certain textures. Any ideas? Thanks, Simon.

Share this post


Link to post
Share on other sites
I don''t have a clue on exact code because I dont have a voodoo 1. I think it has something to do with the 3D Card having seperate memmory than the 2D Card. Also, I''m suprised that textures work on your S3 Virge. I thought that card did not support HW texturing.

Share this post


Link to post
Share on other sites
I had the same problem!
The problem was I wasn''t using the texture management flags when creating my texture surfaces. Are you doing this?
(code

/*
* Texture management flags
*/
if (D3DDeviceGUID == IID_IDirect3DHALDevice)
ddsd.ddsCaps.dwCaps2 = DDSCAPS2_TEXTUREMANAGE;
else if (D3DDeviceGUID == IID_IDirect3DTnLHalDevice)
ddsd.ddsCaps.dwCaps2 = DDSCAPS2_TEXTUREMANAGE;
else
ddsd.ddsCaps.dwCaps /= DDSCAPS_SYSTEMMEMORY;


hope this helps?

Share this post


Link to post
Share on other sites
Yeah, just one flag and it worked. Of course it''s just as important to know why it worked, so i''ll have to have a look at the caps. the voodoo 1 is reporting. If I load the textures into system memory, I get no textures at all, if I load into video memory, I get corrupt textures and i''ve no idea why. It says in the DX7 docs that setting this flag (DDSCAPS2_TEXTUREMANAGE) lets the driver manage the texture instead of IM doing it, so I guess that IM was handling it wrong in some way. I''ll have to look into it more.
As for software mode, i don''t know enough to comment, but in theory you would want the textures in system memory since the CPU can access them faster.

Share this post


Link to post
Share on other sites