Anyone have a clue as to how I can determine the total texture ram available at runtime? Is there a way to do this in OpenGL? For example, I have two GeForce 2 GTS/PRO cards in different computers. One has 32Mb of texture ram, the other has 64Mb. Can I detect this at runtime using OpenGL? If not, can I do it using Win32?
Thanks in advance …
There is no glGet() to determine the amount of available video-RAM. The easiest way to find out how much RAM the installed card has, could be a loop generating proxy textures starting at a high value, say 512MB size to be prepared for future cards, then step down to 128, 64, 32, etc., and see when the proxy texture upload doesn’t return an error. Not sure if this will work, but it might.
You could use DirectDraw to get that information. Though I myself have never examined the dwVidMemTotal or dwVidMemFree members in the DDCAPS structure, so I don’t know how reliable those values would be.
This has been brought up many times before, and you shouldN’T base texture size/quality on the apparent amount of VRAM the card contains.
There have been cards before, that dont store any textures in VRAM, and there could be a change in technology in the future that does the same, thus your program would assume low quality textures, if it only had enuff VRAM for the frame buffers.
Make texture size/quality user definable. It’s the best way.
Thanks for all the help. I have 2 boards, one with 32Mb, the other with 64Mb. They are not labeled with their RAM content so I can’t tell which is which. I thought I might make a utility application that could tell me this and that stirred my interest. I probably would have gone down the road of basing texture size/quality on my VRAM if you hadn’t mentioned that it was a bad idea.