PDA

View Full Version : Interpreting GL_MAX_TEXTURE_SIZE



Rob
04-06-2000, 12:33 PM
When I call glGetIntegerv(GL_MAX_TEXTURE_SIZE, float*) I get a valuue of 2048. Does this mean my maximum texture size is 2048x2048? (the card is a 3dlabs VX1).
What will happen if I try a larger texture size? (I suppose I should just try it and find out. I assume I get an error.)

Eric
04-06-2000, 10:20 PM
You're right on both points !

Your card can handle textures up to 2048x2048 and if you try higher, you should get an error (via glGetError).

Eric

Rob
04-07-2000, 07:11 AM
Follow-up question:
I did a little math on this and it looks to me that this 2048x2048 max texture size equals about 16 MB. This is probably dictated by the amount of texture memory available on the card (makes sense). So does this mean that if I want to avoid loading textures onto the card (after initially defining them of course), I should keep the combined size of all my textures below this 16MB size? i.e. I should try not to use more than 1 2048x2048 texture, or 4 1024x1024 textures, or 16 256x256 textures, etc. or some combination that keeps me below this 16 MB limit?

When I use glBindTexture() to make an existing texture active, if it is already resident in memory on the card, I assume that there is no significant performance hit (as compared to if I'm using more than the available texture memory on the card).

Thanks for any insight.

[This message has been edited by Rob (edited 04-07-2000).]

Humus
04-07-2000, 08:46 AM
Yes, you're right ... changing active texture doesn't give any significant performance hit if it is resident in graphic memory. However, a little commment about your calculations ... you must also consider that the frame buffer and Z/stencil buffer and so on takes a lot of space too. 800x600x32 dubble buffered with 32 bit Z buffer takes 5.5MB mem. 1024x768 will be 9MB mem ...
So, to minimize AGP trafic you may want to use 16 bit textures, which will double the amount of textures you can use. Using 16 bit textures doesn't give the same reduced graphic quality as using 16 bit frame buffer.
It is also important to know that a little trafic over the AGP bus isn't much of a trouble either, for example moving a couple of textures over the bus once every frame. I've done a little app that creates and updates two textures dynamically every frame ... and it runs without any problems, i guess it would even if i updated like 10 texture every frame too. But of course, if you want max speed you should try to keep your textures small enough to fit in memory.