The code is fine: except for wintel hardware

Hi All,

Here is my last headache:

  1. We have a perfectly working OpenGL app (on mid-high range graphics cards).
  2. It works perfectly also on OpenGL 1.1 Microsoft Corporation (no hw acceleration at all)

The problem: on machines with onboard graphics cards the display is wrong.

Objective: a perfect looking app everywhere, of course.

I readed the following two FAQ on this page

5.040 How do I know my program is using hardware acceleration on a Wintel card?
5.050 Where can I get the OpenGL ICD for a Wintel card?

… but still I can’t understand how:

  1. Detect this hardware
  2. Select the more safe pixel format (from the perfect display point of view)

Thanks so much for your help in advance.

Alberto

Therein lies the problem we’re all struggling with. Expect gl3 to do nothing to resolve this flaw of OpenGL.
The solution is to use d3d on windows, and have limited support on linux/osx through opengl and shoddy drivers. It would be an exercise in silliness to use GL on windows, unless you need quad buffered stereo and/or genlock support.

Dear knackered,

Today there are tons of famous application working with opengl on windows and I wish you could make the money their owner made doing the silly thing of using OpenGL on windows.

By the way the solution exist because other can do this. So please help me to find it.

Thanks.

Alberto

Look to what I found on the internet:

The SolidWorks software will typically detect an unsupported graphics card and automatically enable “Software OpenGL” mode. This mode reduces the demands on the graphics hardware and driver, resulting in increased stability but decreased performance (slow/choppy).

This is exaclty what we want to achieve. I found many resources on how to understand what OpenGL implementation is used but not on detecting and switching to the more convenient.

Anybody knows how to do this?

Thanks so much,

Alberto

Create a GL context, if the vendor string includes something like “intel” then discard this context, and recreate the window with a software context. I hope you understand that MS software GL implementation is practically non-usable in all meaningful scenarios though?

P.S. Moving this to Windows section…

If that is really what you want to do (detect Intel) and run in software, I suggest getting Mesa from mesa3d.org and somehow shutdown your program, move that opengl32.dll into your folder, run your app.
At least you get GL 2.1 software renderer this way.

Hi Zengar,

Thanks so much for your help, I was already thinking about this solution and wondering if it could work.

I know how slow is the generic implementation but slow is better than wrong…

To destroy the test RC do I need only to call the following?

wglMakeCurrent(null,null);
wglDestroy context(RC);

Thanks,

Alberto

Hi Again,

I tryed to use the following:

PFD_GENERIC_FORMAT | PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER

instead of:

PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER

but wglChoosePixelFormat() always returns the same and accelerated pixel format.

What I need to do to disable hardware acceleration?

Thanks.

Alberto

very few that run on wintel, and pretty much zero that use features from any recent gl revision.
if you don’t want to accept advice then that’s up to you, but at least thank me for replying to you, you ungrateful tosser.

V-man,

Thanks, but we cannot shutdown the app, sorry.

Alberto

What ? But you can do the detection at install time, and add an option somewhere to “redetect my video hardware”.

Or use dynamic linking to either mesa library or system gl32…

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