Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 10 of 10

Thread: Compile with opengl 3.0 and mingw ???

  1. #1
    Junior Member Newbie
    Join Date
    Sep 2007
    Location
    Italy
    Posts
    15

    Compile with opengl 3.0 and mingw ???

    Hi,
    actually, to compile an opengl application with opengl and glut, using mingw, is very easy, because opengl32.a, glut32.a etc..are included by default in mingw package: just link them and the application is compiled fine.

    In the open source sw we are writing, we have used opengl features <= vers. 1.4, so the binary run fine on both old PCs and last generation PCs. In other words, I can compile it on a very old PC with poor integrated videocard, and then send it to my friend that run it using last NVIDIA card: amazing!

    Now I'm a bit confusing about opengl3.0. I know they just deprecate, without delete, the old functions, but starting from 3.1 deprecated calls will be fully removed, so we need to study them. So my questions are:

    1) If I compile my application, using my usual opengl32.a and glut32.a on my old PC, and then I send the binary to be tested on ultimate video card that use opengl3.0 drivers, it run? If yes, it should print the deprecated functions, while running?

    2)To compile my application using opengl3.0, I suppose I need some particular version of opengl32.a (or maybe it has a different name?). Where to find it? And probably I need to distribute a special opengl32.dll, right?

    3) Assuming I'm able to compile an opengl3.0. What happen if I send the binary to an old PC with an old video card? It will run in emulation mode, or it will not run at all?

    Thanks! I hope this post will be useful for all developers that, as me, are confused by new version. Ah...please excuse me for the poor english: it's not my primary language.

    Best regards,

    Manuel






  2. #2
    Super Moderator OpenGL Guru
    Join Date
    Feb 2000
    Location
    Montreal, Canada
    Posts
    4,264

    Re: Compile with opengl 3.0 and mingw ???

    First off, opengl32.a will not be changing and neither will OS files such as opengl32.dll
    You can compile on Win95 with a very old compiler like Visual C++ 5 if you want and still run it on the latest OS, 64 bit, and the highest end GPU.

    If you are interested in GL 3.0, have a look at WGL_ARB_create_context at http://www.opengl.org/registry

    If there is no WGL_ARB_create_context, then you gently tell the user your system doesn't support it and I can't make a GL 3 context.
    ------------------------------
    Sig: http://glhlib.sourceforge.net
    an open source GLU replacement library. Much more modern than GLU.
    float matrix[16], inverse_matrix[16];
    glhLoadIdentityf2(matrix);
    glhTranslatef2(matrix, 0.0, 0.0, 5.0);
    glhRotateAboutXf2(matrix, angleInRadians);
    glhScalef2(matrix, 1.0, 1.0, -1.0);
    glhQuickInvertMatrixf2(matrix, inverse_matrix);
    glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
    glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);

  3. #3
    Junior Member Newbie
    Join Date
    Sep 2007
    Location
    Italy
    Posts
    15

    Re: Compile with opengl 3.0 and mingw ???

    Quote Originally Posted by V-man
    First off, opengl32.a will not be changing and neither will OS files such as opengl32.dll
    You can compile on Win95 with a very old compiler like Visual C++ 5 if you want and still run it on the latest OS, 64 bit, and the highest end GPU.
    Thanks for reply.
    Anyway I'm a bit confused. To have new 3.0 features I can use actual opengl32.a and no matter about opengl32.dll on users machines? This mean it's all based on card drivers?


    If you are interested in GL 3.0, have a look at WGL_ARB_create_context at http://www.opengl.org/registry
    Sorry, but I'm not expert in extensions: I've always coded using "classic" opengl calls....so, excuse me for this trivial question: this mean 3.0 features are handled as extensions?? I just need to include some new headers in order to use opengl3.0?

    Anyway, an important thing: I don't need opengl3.0 specific features. I need that my actual application will be compatible with next opengl evolutions. This semplify the problem? Maybe it's sufficient don't use the deprecated calls, and continue to compile in the same way (with the same libraries and the same compiler options) as I already do?

    If there is no WGL_ARB_create_context, then you gently tell the user your system doesn't support it and I can't make a GL 3 context.
    So, it's possible make a runtime switch? Or even choose to don't use GL3 context by default, to be sure the app run even on older computers?

    Thanks for the help.

    Manuel




  4. #4
    Senior Member OpenGL Guru
    Join Date
    Mar 2001
    Posts
    3,576

    Re: Compile with opengl 3.0 and mingw ???

    To have new 3.0 features I can use actual opengl32.a and no matter about opengl32.dll on users machines? This mean it's all based on card drivers?
    Yes. That's how it has always been. You get function pointers for the non-GL 1.1 functions with wglGetProcAddress.

    this mean 3.0 features are handled as extensions?? I just need to include some new headers in order to use opengl3.0?
    Well, you have to get the function pointers, but basically yes. That's how all OpenGL versions greater than 1.1 work.

  5. #5
    Junior Member Newbie
    Join Date
    Sep 2007
    Location
    Italy
    Posts
    15

    Re: Compile with opengl 3.0 and mingw ???

    Quote Originally Posted by Korval
    To have new 3.0 features I can use actual opengl32.a and no matter about opengl32.dll on users machines? This mean it's all based on card drivers?
    Yes. That's how it has always been. You get function pointers for the non-GL 1.1 functions with wglGetProcAddress.
    Thanks...I've never used directly wglGetProcAddress...probably it's included in freeglut.
    To come back to my original question: I've an application that actually use features of opengl < 1.4. I must modify it in order to run with opengl3.x, not because I need opengl3.x features, but just because I want future releases of my application are opengl3.x compatible.

    Initially, I thought the best way was to compile it with opengl3.0, so I've started this thread. But now it seem I can compile it in usual way, without need new opengl32.a or new dlls: Just removing deprecated calls.
    It's correct???

    If not, please, can you suggest me the most correct (and, if possible, simple) procedure in order to be sure my open source application (http://www.makehuman.org) will run on next generation machines? Consider I use freeglut (it's more convenient for multiplatform) and I know only the "classic" opengl calls.

    Best regards,

    Manuel


  6. #6
    Member Regular Contributor
    Join Date
    Dec 2007
    Posts
    251

    Re: Compile with opengl 3.0 and mingw ???

    In short, I think it will be a f˙cking mess.
    Microsoft haven't updated the opengl header files or library in what, 12 years, I really doubt they are going to start now.

    Personally, I am ignoring ogl 3.0 for a while.

  7. #7
    Junior Member Regular Contributor
    Join Date
    Aug 2007
    Location
    Adelaide, South Australia
    Posts
    206

    Re: Compile with opengl 3.0 and mingw ???

    All existing OpenGL applications written for any version of OpenGL will continue to work on the next generation and for many many generations after that.
    Depreciation will only remove old features if you specifically ask for a 3.1 context with a particular profile.
    If you leave your program as it is, it will obtain a 2.1 context and all depreciated functions will still work.
    You dont need to remove any depreciated functions unless you want your program to run faster.
    You dont need to use OpenGL 3.0 unless you need to use the new integer shader support.

  8. #8
    Junior Member Newbie
    Join Date
    Sep 2007
    Location
    Italy
    Posts
    15

    Re: Compile with opengl 3.0 and mingw ???

    Quote Originally Posted by Simon Arbon
    All existing OpenGL applications written for any version of OpenGL will continue to work on the next generation and for many many generations after that.
    Thanks you very much, this is what I need to read. But it's a your personal opinion, or there is (even minimal or just sketched, or just few lines) an official doc that talk about this?

    Again, thanks.
    This transition moment is not so simple.

    Manuel

  9. #9
    Junior Member Regular Contributor
    Join Date
    Aug 2007
    Location
    Adelaide, South Australia
    Posts
    206

    Re: Compile with opengl 3.0 and mingw ???

    Here is the official position of NVIDIA, one of the two main providers of graphics hardware:
    http://developer.nvidia.com/object/o...river.html#faq
    Section 3) clearly states that existing software will continue to work on all future hardware.

    Remember that you are not the only one in this position, if anyone stopped suporting old OpenGL versions then none of the games or $1000 CAD programs that people already own would work anymore.
    If a vendor removed support for old software then no-one would buy their hardware, so they have to continue to support OpenGL 2.1 for as long as people want to use 2.1 applications, and that could be 10 years or more.

  10. #10
    Junior Member Newbie
    Join Date
    Sep 2007
    Location
    Italy
    Posts
    15

    Re: Compile with opengl 3.0 and mingw ???

    Quote Originally Posted by Simon Arbon
    Here is the official position of NVIDIA, one of the two main providers of graphics hardware:
    http://developer.nvidia.com/object/o...river.html#faq
    Section 3) clearly states that existing software will continue to work on all future hardware.

    Remember that you are not the only one in this position, if anyone stopped suporting old OpenGL versions then none of the games or $1000 CAD programs that people already own would work anymore.
    If a vendor removed support for old software then no-one would buy their hardware, so they have to continue to support OpenGL 2.1 for as long as people want to use 2.1 applications, and that could be 10 years or more.
    Many Thanks!!

    So, to close this thread in-topic with the title, this is what I've understand:

    -------------------------------------------
    All OpenGL 1.x - OpenGL 2.x applications can be compiled with mingw (and with all other compilers) without changes (using the same headers and libraries too). They will continue to work on all future 3.x hardware.
    -------------------------------------------

    Best regards,

    Manuel

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •