Is there a trick to use a opengl 3.x version program on a graphics card which supports opengl 2.x?

10,778

Solution 1

OpenGL major versions somewhat refer to available hardware capabilities:

  • OpenGL-1: fixed function pipeline (DirectX 7 class HW)
  • OpenGL-2: programmable vertex and fragment shader support.(DirectX 9 class HW)
  • OpenGL-3: programmable geometry shader support (DirectX 10 class HW)
  • OpenGL-4: programmable tesselation shader support and a few other nice things (DirectX 11 class HW).

If your GPU supports OpenGL-2 only, then there is no way you could run a OpenGL-3 program, making use of all whistles and bells on it. Your best bet is a software rasterizing implementation.


A few years ago, when shders were something new, NVidia shipped their developer drivers with some higher functionality emulation software rasterizer, to kickstart shader development, so that there were actual applications to run on those new programmable GPUs.

Solution 2

Sure you can, you just have to disable those features. Whether this will work well depends greatly on the app.

The simplest method is to intercept all OpenGL calls, using some manner of DLL hooking, and filter them as necessary. When OGL3 features are used, return a "correct" answer (but don't do anything) or provide null for calls that aren't required.

If done properly, and the app isn't relying on the OGL3 features, this will run without those on your hardware.

If the app does require OGL3 stuff, results will be unreliable at best, and it may be unusable. It really depends on what exactly the app does and what it needs. Providing a null implementation of OGL3 will allow you to run it, but results are up in the air.

Share:
10,778
Cihad Turhan
Author by

Cihad Turhan

Updated on August 21, 2022

Comments

  • Cihad Turhan
    Cihad Turhan over 1 year

    I have a onboard graphics card which supports opengl 2.2. Can I run a opengl (let's say 3.3 version) application on it by using some software etc?