beginner question/re: win95/98/etc openGL 'distribution'

Started by
5 comments, last by johnnyboy 20 years, 1 month ago
Hi... This might sound like a silly question, but don''t really now. How is OpenGL ''distributed'' on Windows machines? Specifically, Win95/98/NT/XP/2000, etc? Specifically -- what file(s) do I need to distribute with any software I write using OpenGL, to make sure my program will work? (DLL''s, .ocx''s, etc?) I was surprised -- I simply started using visual c++ 6.0, and open GL just seemed to work. Is OpenGL distributed on windows machines by default? Or was it because of my visual C++ install, & there is something I need on a ''clean'' machine? Also... what versions of windows would it work for? I can''t really seem to find any definite documentation on how OpenGL is distributed/making sure it is running, etc on windows ___ machines... Thanks!
!
Advertisement
The OpenGL subsystem consists of two parts. First part is the generic GL dispatching library (opengl32.dll), which comes with Windows by default (even though in a very outdated version). From W95 OSR2 upwards, I believe. The second part is the OpenGL ICD, which connects to opengl32.dll. This one comes as part of the graphics driver, ie. nVidia''s Forceware, ATI''s Catalyst, etc.
ok, thanks... so -- does that mean I need to redistribute
that at all (the opengl32.dll) -- or how do I ''know'' whether
my version of opengl software will work ok on a particular
system?

(i.e., is it like directx, where you have dx version 4,5,6,7,8,
etc -- and a software using say version 8 of dx, won''t work
on a system using dx version 5?) -- if so, how would I ''install''
the latest openGL, or could I simply use the DLL that I write my software with, and assume that overwriting the existing dll (obviously checking version info) -- will be ok/not cause any other apps to crash?

thanks!
!
You don''t need to distribute anything. If you want your users to have good graphics performance, tho, you should exhort them to install the latest drivers for their video card. (this is especially true if you''re using bleeding-edge opengl extensions in your code.)

"Sneftel is correct, if rather vulgar." --Flarelocke
Infact, you shouldnt distribute anything, overwriting the end users opengl32.dll with your own can cause huge amounts of problems (also, i dont belive you have the right to distribute it from a legal stand point, but thats a side consideration)

As Sneftel says, just tell the user to make sure they have an upto date driver installed and they will have the latest version of OpenGL installed for their graphics card
thanks for the replies...

only question I have then is -- how do you know whether
the current version of OpenGL ''supports'' a certain set
of commands?

I.e., I wouldn''t want to write an app using the latest
and greatest technology (say on a brand spanking new version
of windows), only to find that some commands weren''t supported.

Or -- am I thinking from an incorrect mindset -- in that I
just won''t run into those problems? (I.e., either OpenGL
has not been modified/language circa 1995 when Win95
introduced, and the only new changes have been faster/better
optimization -- or -- any new functions are in some kind of ''OpenGL extensions'' that I would know I would need to distribute?)

thx very much!
!
When your program starts up, typically you would check for the presence of the extension in the particular Graphics Card / driver that is being used - I won''t go into details, but there should be plenty of info on how to do this floating around on this website.

Generally, if you are using an extension in your program, you can:
- Warn the user and exit the program
- Implement the same method in a different way
- Do something else

The extensions would be implemented by the driver for the video card, so you won''t have to distribute anything to get them working...

This topic is closed to new replies.

Advertisement