I was wondering if you could help me with the following issue. How do I tell OpenGL to do something in hardware as opposed to software? Say I want to render a simple cube. Do I follow most examples on how to do this and OpenGL knows to do it in hardware if it is supported (like my nvidia’s Gforce3), or will it do it in software unless I specifially tell it that I want it in hardware (by issuing other commands)?
Thanks in advance,
You don’t. For reasons too numerous to mention, you have no control whatsoever over how an implementation decides to perform a requested bit of functionality. You can certainly read around or experiment to find techniques which use the hardware to best effect, and it’s obviously in driver writers’ interests to facilitate this as much as possible, but a fully conforming OpenGL implementation is perfectly free to render Quake2 in hardware yesterday and in software today just because it’s Wednesday and the year is palindromic and there’s a “J” in the month.
I write CAD software and I like to allow the user the ability to turn off hardware acceleration as an option. I then choose a pixel format accordingly. This comes in handy when we encounter a “flaky” OpenGL implementation, we can also resort to the software implementation.