English 中文(简体)
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.

最佳回答

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>
问题回答

It should all just work out of the box given the right packages.

That said, here is the relevant chunk of the Build-Depends: used to build the rgl package (which provides on OpenGL device for R) on Debian. As Ubuntu uses the same settings for their build of the package, you should really bet set:

libgl1-mesa-dev | libgl-dev, libglu1-mesa-dev | libglu-dev, 
libpng12-dev, libx11-dev, libxt-dev, x11proto-core-dev

The | means alternative, so you can use the mesa-based packages or ones matching your graphics card (like the various nvidia-* packages).

Just grab some OpenGPl examples from somewhere and try it.

You are going right direction. I used Eclipse CDT+ SDL + openGL for developing my app under Ubuntu Linux (I used this tutorial for setup: http://www.ferdychristant.com/blog/articles/DOMM-72MPPE) and then successfully compiled my app under Windows with Dev C++

I m not of much help in the Linux realm. And I m behind the times when it comes to OpenGL. However, it looks like NeHe has a new set of tutorials where they re putting together some nice base code.

As they say on the site:

When writing the new tutorials we have several goals:

  • Write using a clean, simple and consistent coding standard
  • Write using modern C++
  • Remain totally cross-platform (that is OpenGL s strength after all)
  • Inspire people to submit their own lessons based on our basecode

So I d highly recommend at least giving their code a try. NeHe has a long standing tradition of creating some very nice tutorials.





相关问题
Signed executables under Linux

For security reasons, it is desirable to check the integrity of code before execution, avoiding tampered software by an attacker. So, my question is How to sign executable code and run only trusted ...

encoding of file shell script

How can I check the file encoding in a shell script? I need to know if a file is encoded in utf-8 or iso-8859-1. Thanks

How to write a Remote DataModule to run on a linux server?

i would like to know if there are any solution to do this. Does anyone? The big picture: I want to access data over the web, using my delphi thin clients. But i´would like to keep my server/service ...

How can I use exit codes to run shell scripts sequentially?

Since cruise control is full of bugs that have wasted my entire week, I have decided the existing shell scripts I have are simpler and thus better. Here is what I have so far svn update /var/www/...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

热门标签