How big should textures be?


in my program i use around 20 textures at the time (but it will be much more). My testlevel has around 4000 polys and my engine draws usually 2000 of them at a time. At a resolution of 102476832 with non-compressed textures, anisotropic filtering (trilinear) and 32 bit textures, i get around 60 - 100 FPS. I have an Athlon 1,3 Ghz, 512 MB RAM and a Geforce 2 Ti. I think that the framerate is too low.
Now i was thinking, if my textures might be much too high-res. I use the texture pak of nVidia and therefore most textures are at a size of 1024 or 512 pixels.

So now my question: How big textures do current games use? What is low-res, and what is too high?

Also another thing: I use nVidias newest Detonator driver. However i have the impression, that it is very slow. With my old driver my app was much faster (around 100 FPS or so). Also under WinXP i am not able to put my vertex-arrays into VRAM or even AGP-memory. I have to put it into System-memory, or else it will crash. I don´t know how this happens, cause the memory can be allocated, but when i try to draw such an array, it crashes.


I’d class too high as, a texel ixel ratio at the highest possible screen resolution over 1, whereby the texture is the closest it’s ever gonna get to the screen.

As for lowest. Well thats dependant on who’s looking.

Best way is to make it variable. Then you can use a slider to tradeoff performance versus visual quality.


I’d class too high as, a texel-Pixel ratio at the highest possible screen resolution over 1, whereby the texture is the closest it’s ever gonna get to the screen.

What about when you get close to a wall, to where the texture is being stretched significantly? Having > 1024x1024 textures is a perfectly legitimate concept, if not reasonable (due to memory constraints).

IF the texture was being stretched, say 2 screens wide, at 1024x768. Then you’d have a texel to pixel ratio of 1:2, or .5, not over 1.

What I’m saying is, if you have a fullscreen image, and your maximum supported res is 1600x1200, then its pointless storing the texture at a resolution higher than this.


How to make your OpenGL program faster 101:

First, figure out what’s the limiting factor on your current set-up.

Reduce the size of your window, and/or turn on glCullFace(GL_FRONT_AND_BACK). At that point, you’ll find out if you’re fill rate limited or geometry/CPU limited. If FPS goes up dramatically with a 256x192 window, and/or when turning on culling of all triangles, then you’re fill rate limited. If you’re fill rate limited, figure out how to draw fewer pixels on the screen. If you’re geometry limited, figure out how to draw fewer vertices, or, more likely, how to submit your vertices to the card more efficiently.

Actually, it’s really hard to be geometry limited with a geometry of only 4000 verts, unless you’re submitting them through gluQuadrics or something. If you’re not fill rate limited with that little geometry, then you’re probably CPU limited – turn on VTune and figure out where the time is being spent.