Voodoo 3 - Texture limitations?

I’m new to the message forum. It looks interesting… I have a problem that perhaps a lot of people have encountered. I wrote a program that worked find with my Rage card and then put in a Voodoo 3. Some of the textures appeared fine. It turns out, I cannot display a texture with width or height > 256. Is this something I can work around, or am I stuck?


You basically have two options. You can either use a downsampled version of the texture to meet that 256 extent limit. Or split up the texture and retesselate your geometry to use the multiple textures.

[This message has been edited by DFrey (edited 10-25-2000).]

This is a HW limitation on the older Voodoo cards. I believe they eliminated the restriction in V4/V5.

You can ask a driver what size textures it supports by querying GL_MAX_TEXTURE_SIZE. Likewise, there are queries for other types of textures: GL_MAX_3D_TEXTURE_SIZE, GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB. If you have a texture that is too large, you must choose between lower resolution and splitting up the texture, as DFrey says.

  • Matt

If you mipmap your textures the 256 limitation is off; plus your textures do not have to be square.

Is that true about mipmaps and the 256 size restriction? I’ve never heard that…

I’m pretty sure that is not correct. The max texture size is defined by the state variable GL_MAX_TEXTURE_SIZE. And it is independent of mip mapping. I think he is confusing the limitation with the abilities of gluBuild2DMipmaps. It simply scales the textures for you, but it does so in accordance with the same texture size limitations you would have to deal with when building the mipmaps yourself.

Just a quick note:
I too have lifted the constriction of ‘square textures’ with the use of mipmapping.

I’m not sure about overcoming maximum texture size though…

I should point out that this only works if you generate mipmaps in a manner that if a texture is not a power of two, it’s scaled.

Infact, this obviously works for any texture generation method, however it is a feature of gluBuild2DMipmaps();