Help with understanding where OpenGL lives

Hi,

I’ve used OpenGL before, but I was wondering if someone can tell me exactly where OpenGL actually “lives”.

Does it reside in software (like in some Vista code or driver code) or hardware (like in the gfx card) ? I’ve just bought a brand new PC with an ATI Radeon X1300 graphics card. Of course the card comes with drivers from ATI that presumably let Windows Vista communicate with the card.

When I give OpenGL a command (like to draw a square, say) I am having trouble working out exactly how the computer ends up drawing it on the screen.

I assume that the command travels from my code to JOGL, and then to the ATI graphics driver which then breaks this OpenGL “command” down into pieces that the graphics card can understand. Is this correct?

Does the “hardware acceleration” for OpenGL occur automatically (by feeding the calls directly to the graphics card) or do I have to do something special to “tell” the card to accelerate the command? How do I know that my CPUs are not responsible for the rendering and that I’m actually using the power of the gfx card?

On a related note, I noticed that I can run Google Earth using OpenGL if I want. When I do the rendering of the earth slows down incredibly (remember I have a new machine, a 1.8GHz core 2 duo). Why is the rendering so incredibly awful? Is it some Microsoft thing? It looks to me like the rendering is being done either very inefficiently or in software rather than being accelerated.

Thanks in advance.

Mark

as a test case, launch one small demo you can find everywhere on the net and try switching on and off the OpenGL acceleration and you certainly see the difference. As a matter of fact, OGL is integrated as DirectX is on Windows. but for some reasons, OGL programmers would use direct coding to OGL with the API. It depends if you want to have special FX from either DX or OGL but also if you’re targeting high-end systems or overall. BTW there’s many API that impl. OGL or DX FX, and also there are other API like JavaFX or JInput or JAI that doesn’t use any external proprietary library to render on.
To be more compatible with our applications as developers, we always try to use the best API to get the best results. For instance Intel would use their proprietary MMX or SSE or whatever extension to get the best effort from their CPU as Windows or Linux would get on better on PC-compatible than Mac OS. :smiley:
Then compiling programs under a PC would become ridiculous if you want to port them to MacOS and vice-versa. But Java and other programmatic languages do have support on both platforms, that is the point about compatibility. When OGL programmers do have their own API for Java it’s also a fact that they’ve been involved to get the high-end graphics on all platforms, which isn’t true for micros. DX stuff. Consequently I don’t want to discourage proprietary forms of programming or licensing, but there will always be such unsatisfied complainants to “marketing monopole”.
So “where does OpenGL lives”, that’s what you’re asking for and I’d say it’s where it lives it will do its best. Such a complex undefined question… 8)

[quote]So “where does OpenGL lives”, that’s what you’re asking for and I’d say it’s where it lives it will do its best. Such a complex undefined question…
[/quote]
If you’d actually read the post, instead of only the title, you’d have seen the question in it’s context.

  • OpenGL is not integrated as DirectX on Windows,
    it’s implemented using DirectX on Vista for windowed mode.
  • There are not many API that implement OpenGL,
    there are multiple implementations of the OpenGL API (usually part of the gfx driver)
  • There are not many DirectX implementations, there is only one by microsoft
    (and maybe in transgaming for linux, don’t know) implemented (afaik) on top of the gfx driver
  • JavaFX, JInput and JAI are completely different things and may very well use proprietary
    libraries to provide their functionality (and JInput afaik does not render anything…)

so well I think you answered more correctly to the problem… :wink: