Search code examples
linuxopenglubuntucross-compilinggtkmm

Setting up OpenGL on Linux for gtkmm and cross-compilation


I am starting learning OpenGL and I am not sure, how to set it up on (Ubuntu) Linux.

I think that this could be a way:

OpenGL is only a graphics language specification (or interface) and to properly use it I have to download some library (for the specific OS) that implements the OpenGL specification.

After long searching and from multiple sources I found that the Mesa 3D Graphics Library would be the best for me.

I also found the SDL (Simple DirectMedia Layer) library but it seems to be a library for all other things beside graphics (e.g. GUI, sound, keyboard and mouse input, ...). I need ONLY a graphics library, so that it will implement the OpenGL specification.

As a graphical user interface I use the Gtkmm library and I am "very satisfied" with it so far, so I would like to "connect" gtkmm with OpenGL - for that I found an extension to gtkmm library called gtkglextmm by means of which I should be able to draw the OpenGL animation to a window (or DrawingArea in Gtkmm jargon) in GUI (but I have not tried it yet so I hope it will work :-) ).

And the last problem is the cross compilation from Linux to Windows (with the MinGW cross compiler). So far, I have successfully cross compiled (from Linux to Windows) all my work done with the Gtkmm library.

When I combine it with OpenGL, won't it be any problem to cross compile it (e.g. do I need to link something special when compiling with the Gcc compiler, or should I distribute some Windows OpenGL library with my application)?

I would be very pleased I you confirmed that I am in the right direction or turned me in the right direction that I could done something easier or better way.


Solution

  • To some extent its graphics card dependent, the proprietary driver packs include their own libGL.so and also include the libGL.la (to link against the .so) and any relevant header files.

    • Nvidia - OpenGL libraries and headers are included in the proprietary driver package.
    • ATi FGLRX - OpenGL libraries and headers are included in the proprietary driver package.
    • Open Source Drivers - OpenGL libraries and headers are provided as a part of Mesa. Depending on your distribution you may need to install the *-devel packages to get the headers and linkable libraries you'll need.

    If you're using an Intel or Matrox card, or you're running an ATi card with the rage, radeon or radeonhd driver you're using the Open Source drivers.

    GLUT will be the shortest path to a working program. Otherwise you'll need to write the code to create the OpenGL context (OS specific) yourself.

    If you're still having issues, let us know more about whats not working for you.

    EDIT Here's some sample commands/code that might be relevant or useful.

    GCC Compiling:

    gcc -lGL glprogram.c -o glprogram
    

    Includes:

    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <GL/glut.h>