Terms... Terms... Terms... !!!

Hi all !!

I am having a problem in understanding various names (or parts maybe) of this OpenGL family.

What is the difference between these terms:

  1. OpenGL (as in: “You should download OpenGL 1.2 …”)
  2. OpenGL Specification
  3. OpenGL Implementation
  4. OpenGL Related-Library
  5. OpenGL Utility Library (GLU)
  6. OpenGL Utility Toolkit (GLUT)

i am really very confused with these terms, i have read many introductions, nehe, redbook … etc, but i still can’t get it!

let’s see if my vision about this thing is right:

For the first problem:
When we say “OpenGL” we really mean GLU or GLUT … right ?

For the second problem:
the “OpenGL Specification” is not kind of binary software that you can execute, nor an interactive application development environment, but it is something like a PROTOCOL that everyone have to follow (like the HTTP protocol, all browsers & servers must follow it) … right ?

For the third problem:
(This is based on the previous vision)
When we say “OpenGL Implementation” we mean an application which follow the OpenGL protocol (like Netscape,IE,Opera for HTTP) … right ?

For the fourth problem:
still nothing in my mind about it

For the fifth & sixth problem:
GLU & GLUT are Implementations of openGL … GLU is simpler and smaller … and GLUT is bigger and have windowing management included … right ?

Sorry for my long message, but these terms are really confusing

Any help is appreciated so much …

You are on the right track.

1: “OpenGL” as it is is just the name on the graphics API.

2: OpenGL specification can be seen as a protocol, describing in detail what all functions should, and how they interact with the user. This is just a document, and cen be downloaded freely from the download section on this site.

3: OpenGL implementation is usually a driver, or some kind of library, that provides a software based on the specification. This implementation is the connection between your application and the window.

4: Related library, well, some library related to OpenGL

5: GLU is a helper library ontop of OpenGL. OpenGL provides a low lever interface to graphics hardware, and does not contain higher level stuff. GLU intruduces things like curved surfaces, advanced matrix functions (gluLookAt, gluPickMatrix for example). This library is to move high level stuff from OpenGL, which is low level.

6: GLUT is library to, in a platfor independent way, handle windows, inputs, and other platform specific stuff. OpenGL does not provide a way to create a window. That is up to the operating system to create an environment for OpenGL. GLUT simplifies this process, which is different on all platforms. GLUT is a third party library, and is not a part of OpenGL, which GLU is.

You are on the right track.

Thanks

3: OpenGL implementation is usually a driver, or some kind of library, that provides a software based on the specification. This implementation is the connection between your application and the window.

So, The implementation is the .lib files ? In another way, if i need to program for OpenGL, i have JUST to download an implementation, right ? … I think i didn’t get this one !

4: Related library, well, some library related to OpenGL

… Sure, it is !

5: GLU is a helper library ontop of OpenGL. OpenGL provides a low level interface to graphics hardware, and does not contain higher level stuff…This library is to move high level stuff from OpenGL, which is low level.

Let’s make this one clear >> GLU makes OpenGL low-level OR GLU makes OpenGL high-level ??? Could GLU be seen (in someway) as a different specification ?? Becaue OpenGL is low, GLU is high (or vice-versa!?) … right ?

Conclusion?

If i want to program applications using OpenGL, what does that mean? since OpenGL is just a name? does it mean: I am making a program that uses the files of an implementation library of OpenGL specification ?

Thanks alot Bob

OpenGL = Open Graphics Library

As an API OpenGL provides functions to do 2D and 3D graphics. If you code an app using this functions you are coding OpenGL.

GLU doesn’t do anything to OpenGL. It is a library on top of OpenGL, that just offers additional functions (you decide if you want these functions or not) same for GLUT except that if offers functions for a different purpose.
So you don’t need to use GLU or GLUT but they can make your life easier.

For more in-depth info: http://www.opengl.org/developers/documentation/index.html

hih

To make my problem more clear, here is a scenario:

I am a programmer who wants SIMPLY to make applications that “USES” OpenGL Technology … ok until here ? the problem is, how to TRANSLATE the word USES into computer steps (i.e. Compile, Include Some Headers, Link some libs …etc) ?? the word USES is foggy word, it doesn’t show how to REALLY use the OpenGL stuff!

If OpenGL is just a specification (or standard, API, interface … you name) and is just a NAEM as bob said. And for the GLU & GLUT they are just OPTIONAL libraries. So where is the real stuff ??? where is the product in here ?? where is these open graphics LIBRARIES ??

GLU It is a library on top of OpenGL…same for GLUT

you said “on top of OpenGL” >>>> WHERE IS OPENGL !!??? its just a specification (or document as Bob said) !!!

BTW, i have screwed up almost all pages of opengl.org to find a clue for my problem, but i didn’t find an answer the same also for nehe and almost all of the sites provided in the tutorials section of opengl.org

You take all this with 100% correct terminology too serious. When we say for example “coding with OpenGL”, we really mean “coding and linking to an OpenGL implementation”. When we say “read about OpenGL works”, we mean “read the OpenGL specification”.

“Ontop of OpenGL” means exactly that, ontop of OpenGL. GLU needs a specificaiton, and therefore the GLU specificaion is ontop of the OpenGL specificaion. GLU also needs a physical implementation, and the GLU implementation is therefore ontop of the OpenGL implementation.

When you code a program using OpenGL, you include a header and link to a library. The header and library is a part of the implementation.

[This message has been edited by Bob (edited 07-12-2002).]

Thanks Bob, that was a real magic

i am now beginning to understand it 96% … thanks alot

And soory for being too strict, i am a heavy programmer, and a programmer uses his logic tooo much , there is no place for fuzzy digits (although, there is fuzzy logic )

After all this, it means that i will 100% find the header files and the libs in any implementation i download from here: http://www.opengl.org/developers/documentation/implementations.html … and the same also for here: http://www.opengl.org/users/apps_hardware/applications/devtools.html ???

What about when two programmers wants to exchange some code, but both uses different implementations, It is possible to have SOME incompatible functions, right? if yes, how to solve that!?

a Joke for refreshing : if both links are implementations, why the first link (that has less implementations than the other) included in the developer section, and the second link (which has a huge list) is included in the user section !! may be they should fix this; because developers will go to the developers section immediatley when they enter the site, why to make their goal harder ?!

again, Thanks alot Bob

The first link you post has a list over operating systems to which an OpenGL implementation exists. Several implementation may exist for an operating system. To find an actual implementation, follow the links and you will be redirected to the place that has one, or information on how to get one.

The second link is just a bunch of software than uses OpenGL for rendering, and they are not implementations.

About portability. OpenGL is backward compatible, meaning if you write a program for OpenGL 1.2, it will work on OpenGL 1.1 and earlier. About different implementations, and not only different versions of the same implementation, they are also, more or less, guaranteed to work together. After all, they are all based on the same specification.

But the portability part is only valid for the OpenGL code. System code, like initialization of rendering environment may be different on all platforms, but that’s nothing OpenGL deals with, and is not covered by the portability provided by OpenGL.

[This message has been edited by Bob (edited 07-13-2002).]

>>OpenGL is backward compatible, meaning if you write a program for OpenGL 1.2, it will work on OpenGL 1.1 and earlier<<

Yeah, and OpenGL programmers invented the time machine.
It’s the other way round. It’s forward compatible. You cannot expect functions of a higher version to be existent in the older ones.

What is the difference between these terms:

  1. OpenGL (as in: “You should download OpenGL 1.2 …”)

OpenGL (Open Graphics Library) is in a protocall of sorts, as you have http version 1.0, 1.1, etc, then same holds true with openGL 1.0, 1.1, etc. It is best to used the newest version of openGL to take advantage of the added features.

  1. OpenGL Specification

Just list of what features are found in the current version of openGL.

  1. OpenGL Implementation

It is what programming languages and operating systems have support for openGL.

languages: C/C++, Java, Delphi, etc.
operating systems: Windows, UNIX, Mac, etc.

  1. OpenGL Related-Library

GLU and GLUT fall under here, could be any library that extends the function of opengl.
If you have had any programming experince you should understand the use of library’s to let you reuse useful routines in other programs without having to start from scratch.

  1. OpenGL Utility Library (GLU)

openGL Utility library, adds functions not found in opengl base library. GLU is built from the base opengl library functions.

  1. OpenGL Utility Toolkit (GLUT)

openGL Utility Toolkit is another library that adds useful functions not found in openGL base. I it good for the first time users of openGL.

Order of library:

openGL Base
GLU middle level functions (base + GLU)
GLUT higher level functions (base + GLU +GLUT)

But you do not have to use GLU or GLUT to write an openGL program, just makes it easier then have to write your own versions of there routines.

Originally posted by NaGl:
[b]Hi all !!

I am having a problem in understanding various names (or parts maybe) of this OpenGL family.

What is the difference between these terms:

  1. OpenGL (as in: “You should download OpenGL 1.2 …”)
  2. OpenGL Specification
  3. OpenGL Implementation
  4. OpenGL Related-Library
  5. OpenGL Utility Library (GLU)
  6. OpenGL Utility Toolkit (GLUT)

i am really very confused with these terms, i have read many introductions, nehe, redbook … etc, but i still can’t get it!

let’s see if my vision about this thing is right:

For the first problem:
When we say “OpenGL” we really mean GLU or GLUT … right ?

For the second problem:
the “OpenGL Specification” is not kind of binary software that you can execute, nor an interactive application development environment, but it is something like a PROTOCOL that everyone have to follow (like the HTTP protocol, all browsers & servers must follow it) … right ?

For the third problem:
(This is based on the previous vision)
When we say “OpenGL Implementation” we mean an application which follow the OpenGL protocol (like Netscape,IE,Opera for HTTP) … right ?

For the fourth problem:
still nothing in my mind about it

For the fifth & sixth problem:
GLU & GLUT are Implementations of openGL … GLU is simpler and smaller … and GLUT is bigger and have windowing management included … right ?

Sorry for my long message, but these terms are really confusing

Any help is appreciated so much …[/b]

If you are using one of the Microsoft Visual C++ products, the opengl header and lib files are already there. Just include them at the begining of your program, and add the librarys to your linker.

What language/compiler are you using?

Have you looked in your ..\lib to see if the files are there? or ..\include\GL?

Originally posted by NaGl:
[b]To make my problem more clear, here is a scenario:

I am a programmer who wants SIMPLY to make applications that “USES” OpenGL Technology … ok until here ? the problem is, how to TRANSLATE the word USES into computer steps (i.e. Compile, Include Some Headers, Link some libs …etc) ?? the word USES is foggy word, it doesn’t show how to REALLY use the OpenGL stuff!

If OpenGL is just a specification (or standard, API, interface … you name) and is just a NAEM as bob said. And for the GLU & GLUT they are just OPTIONAL libraries. So where is the real stuff ??? where is the product in here ?? where is these open graphics LIBRARIES ??

[quote]GLU It is a library on top of OpenGL…same for GLUT

you said “on top of OpenGL” >>>> WHERE IS OPENGL !!??? its just a specification (or document as Bob said) !!!

BTW, i have screwed up almost all pages of opengl.org to find a clue for my problem, but i didn’t find an answer the same also for nehe and almost all of the sites provided in the tutorials section of opengl.org[/b][/QUOTE]

Yeah, and OpenGL programmers invented the time machine.
It’s the other way round. It’s forward compatible. You cannot expect functions of a higher version to be existent in the older ones.

pulls a paper bag over the head

Might have been the most stupid thing I have said for some time.

Originally posted by Bob:

Yeah, and OpenGL programmers invented the time machine.
It’s the other way round. It’s forward compatible. You cannot expect functions of a higher version to be existent in the older ones.

pulls a paper bag over the head

Might have been the most stupid thing I have said for some time.

Bob, don’t be so hard on yourself, AFAIK you were right. ‘backwards compatible’ means that application version X can use stuff produced by application version X minus anything.
Forward compatible means that application version X will be able to handle stuff produced by application version X plus something.

That applied to OpenGL IMHO means OpenGL implementations are backwards compatible: they accept stuff written for lower OpenGL versions.
They are not forward compatible: A 1.1 implementation will choke on 1.3 calls made to it (GetProcAddress() fails–> error).
Note: fallback in the apps to ‘just use 1.1 functions’ of course don’t count !

<edit>
Yep, dictionary.com comfirms:
backward compatible

<jargon> A system is backward compatible if it is compatible with (e.g. can share data with) earlier versions of itself, or sometimes other earlier systems, particularly systems it intends to supplant.
For example, WordPerfect 6.0 can read WordPerfect 5.1 files, so it is backward compatible. It can be said that Perl is backward compatible with awk, because Perl was (among other things) intended to replace awk, and can, with a converter, run awk programs.

See also: backward combatability.

Compare: forward compatible.

(1998-01-15)

Source: The Free On-line Dictionary of Computing, © 1993-2001 Denis Howe
</edit>

Just my .02

Jean-Marc.

[This message has been edited by JML (edited 07-17-2002).]

Yeah, I agree, backward compatible means a newer versions can run programs written for older versions. However, the embarrasing part was when I said if you write a program for OpenGL 1.2, it will work on OpenGL 1.1 and earlier.