OpenGL Graphics Acceleration


Just wondered if anybody could tell me how openGL makes use of hardware acceleration.

is it just for the rendering parts or does it some how speed up the matrix multiplications as well?

what i’m getting at is - if i code my own matrix manipulation functions will they be significantly slower than openGL’s?


It depends on your HW. If you have a HW with T&L, then you’d better use OGL’s tranformation matrices rather than your own (cos they are accelerated). If not, you can do your own matrix manipulation functions, but I am not sure that you’ll get a real advantage in doing that.

Well, each 3D accelerator card provides you the implementation (drivers) of OpenGL for your card. When you run program that uses OpenGL, the program loads a file named opengl32.dll, which is the driver for your board. By default, windows includes that file, but it runs OpenGL on a software basis (veeeery slow). The installation of your 3D board drivers should replace this file by a hardware-accelerated driver, then, the program will be hardware-accelerated (infinitely faster than software).

Mmm… Well not all of the 3d boards supports transformation and illumination (T&L) by hardware, the 3d boards that do are all the “GeForce’s” (I and II) and maybe voodoo 5. So, if your program runs on a GeForce and you implement your own matrix operations, they will not run hardware-accelerated and they will be slower than OpenGL’s matrix operations.

P.D.: Excuse my English, but I’m Spanish and I don’t speak it at all.

Auctally OpenGL32.dll is in windows the standard opengl implementation which can route the opengl calls to the specific opengl driver of your card (say nvogl.dll for nvidia cards, I think).

The Opengl32.dll is NOT replaced by the hardware driver!

[This message has been edited by Michael Steinberg (edited 12-09-2000).]

Since OpenGl32.dll is not replaced, how can we select which acceleration our program will use? Is there any generic enumeration/setup function, or each 3D Cards has its own API?

Thank you,