OpenGL acceleration

OpenGL only seems to run with acceleration in some of the commercial games i have. For example, Tribes and Half-life run fine/good with OpenGL with acceleration, yet my apps and nehe’s run without acceleration.

My video card (S3 Savage3D) says that it supports OpenGL, and i just updated the drivers for it so im sorta running out of ideas why my apps are running without acceleration. most/all my code is based on NeHe’s tuts.

Is it my video card, or something i have to do in OpenGL to activate acceleration?

Except for some extremely expensive high-end cards (probably not the ones you see in retail stores), no video cards accelerate all of OpenGL’s functions. Instead the accelerate a few and leave the rest to software.

Your games probably contain code which determines what’s accelerated and what’s not, and then tries to take advantage of what is. Nehe’s tutorials, on the other hand, are just bare-bones apps to teach you the basics.

If you’d like an example, try running a program in 8-, 16-, 24- and 32-bit colour modes. 8-bit is almost never acclerated these days, while 16- almost defintely will be. I’d suggest looking at hardware review sites for reviews of your card, and read to see what it accelerates and what is doesn’t.


Most of NeHe’s tutorials are simple in design and simply use ChoosePixelFormat to find a suitable pixelformat, this is typically quite ok. However, as it turns out, on your hardware, ChoosePixelFormat, is choosing a pixelformat that your OpenGL driver can not use, and instead the software OpenGL rasterizer is being used. You will need to do a more thorough enumeration of the pixelformats and their associated OpenGL contexts to locate a pixelformat that your hardware OpenGL driver can use. That would be the best all around solution. However, if I were to guess, I’d bet that your resolution was too high.

Try at low resolutions. Cards can do 3D up to a maximum desktop resolution, so all 3D memory requirements can be satisfied (zbuffer, front and back frame buffers, texturing, etc).
Games generally change your desktop resolution to relativelly low resolutions, making space in the card’s memory).
For example, a tipical desktop display resolution of 1024x768 at 32bit will require for 3D in OpenGL about 9MB of video memory, a 1280x1024x32bit resolution requires 15MB, etc.