OpenGL and Vista

I’ve developed a CGM viewer for 2D cad purposes. All works well in XP, 2003, 2000 but in Vista I have huge problems. Does anybody know if Vista will ultimately be fully compatable with OpenGL? What I’ve read on various sites is about a year old. I’d like to know if others are having problems with Vista and if there are solutions where can I find them?

Thanks,

Frank

OpenGL rendering functionality itself is working under Vista. (Though I wouldn’t count on any other implementation than NVIDIA or AMD/ATI.)
The major obstacle for applications is Vista’s incompatibility of GDI rendering into 3D accelerated windows. If you use GDI in your application to render anything, like rubber bands, selection highlights, etc. into the same window you’re rendering with OpenGL (or Direct3D) you get serious graphics corruption.
You need to replace those features with OpenGL rendering if you want to keep the Aero glass theme active.
(Search the forum for my username and “Vista” topics and you’ll find more explanations.)

Vista has nothing that makes it magically “incompatible” with OpenGL. In fact, the situation is exactly the same as with Windows XP: by default there’s no OpenGL installed, and graphics drivers install whole OpenGL implementation.

Yes, OpenGL on Windows is entirely contained within the graphics drivers. If there are some problems, it’s a driver bug (or an annoying feature). Exactly the same between Windows 2000, XP, 2003, Vista and so on.

Now, of course the drivers for Vista are a lot different than drivers for XP, because of underlying OS differences. But this is not OpenGL specific; just pointing out that the drivers are different. Hardware vendors did have 7 years to polish XP drivers by now (and they still have lots of problems with OpenGL), whereas with Vista they did not have 7 years yet :slight_smile:

This is just plain wrong. The OS interface (opengl32.dll) is still provided by Windows, as it has always been.

The only “problem” with Vista is that is breaks badly written OpenGL code that (due to various reasons) so happens to work with XP — the reason is window composition. By badly written code I mean code that draws to the front buffer and/or mixes GDI and GL rendering in the same window.

But that is nothing more than a “router” of the calls to the driver. Same as it was on XP.

But yes, window composition is different on Vista. This is not something that “Vista breaks OpenGL!!!111” though, it affects D3D programs as well. It is just different, deal with it. It’s not Vista killing OpenGL on purpose.

But that is nothing more than a “router” of the calls to the driver. Same as it was on XP.
[/QUOTE]
It is a fully functional implementation. So without additional drivers installed, you can still use it for rendering.

But that is nothing more than a “router” of the calls to the driver. Same as it was on XP.

But yes, window composition is different on Vista. This is not something that “Vista breaks OpenGL!!!111” though, it affects D3D programs as well. It is just different, deal with it. It’s not Vista killing OpenGL on purpose.[/QUOTE]

Ah, ok, I understood you the wrong way.

I want to thank everyone here for your advice.

It turns out that there’s a little difference in how Vista handles the refreshing of buffers as opposed to XP. I’m not using GDI. Where I was having problems is where I highlight a hotspot on a drawing. The highlight is a red line around the primitive as I hover over it with the mouse cusor. As I move over more and more lines or text the buffers would not refresh and the previous highlights would show up. In XP I was clearing the buffers only when removing the highlight. In Vista I have to clear the buffers before placing the highlight and obviously to remove the highlight.

Frank

It is not a Vista issue. This is how it is on all OSes and GPUs, even Linux, Mac and etc. Once you swap buffers, then the backbuffer content is considered undefined.
There is some flag that could be set for the pixelformat : PFD_SWAP_COPY
which should help in this area but I don’t know if it is garanteed to work.

I thought that PFD_SWAP_COPY was the answer to all my problems… until I discovered it does NOT work on ATI hardware.

Maybe GL_WIN_swap_hint is of use (although ATI drivers seem to spport it, I have no idea whether it actually works or not).

Some years ago I also played around with PFD_SWAP_COPY. You really couldn’t rely on it. I finally abandoned all efforts in that direction.

CatDog

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.