在Linux上为gtkmm和交叉编译设置OpenGL

时间:2009-12-10 19:48:39

标签: linux opengl ubuntu cross-compiling gtkmm

我开始学习OpenGL,我不确定,如何在(Ubuntu)Linux上进行设置。

我认为这可能是一种方式:

OpenGL只是一种图形语言规范(或接口),要正确使用它,我必须下载一些实现 OpenGL规范的库(针对特定操作系统)

经过长时间的搜索和多个来源,我发现Mesa 3D图形库对我来说是最好的。

我还发现了SDL(简单直接媒体层)库,但它似乎是图形旁边所有其他东西的库(例如GUI,声音,键盘和鼠标输入......)。我只需要一个图形库,因此它将实现OpenGL规范。

作为一个图形用户界面,我使用Gtkmm库,到目前为止我“非常满意”,所以我想将gtkmm与OpenGL“连接” - 为此我找到了一个名为{{1的gtkmm库的扩展名通过这种方式,我应该能够在GUI中将OpenGL动画绘制到一个窗口(或Gtkmm术语中的gtkglextmm)(但我还没有尝试过,所以我希望它可以工作:-))。

最后一个问题是从Linux到Windows的交叉编译(使用MinGW交叉编译器)。到目前为止,我已成功交叉编译(从Linux到Windows)我使用Gtkmm库完成的所有工作。

当我将它与OpenGL结合使用时,交叉编译它是不是有任何问题(例如,在使用Gcc编译器进行编译时是否需要链接一些特殊内容,或者我应该使用我的应用程序分发一些Windows OpenGL库)?

我很高兴你确认我正朝着正确的方向前进,或者让我朝着正确的方向前进,我可以做得更轻松或更好。

4 个答案:

答案 0 :(得分:2)

在某种程度上,它依赖于显卡,专有的驱动程序包包括它们自己的libGL.so,还包括libGL.la(链接到.so)和任何相关的头文件。

  • Nvidia - OpenGL库和标头包含在专有驱动程序包中。
  • ATi FGLRX - OpenGL库和标头包含在专有驱动程序包中。
  • 开源驱动程序 - OpenGL库和标头作为Mesa的一部分提供。根据您的发行版,您可能需要安装* -devel包以获取您需要的标题和可链接库。

如果您使用的是英特尔或Matrox卡,或者您正在运行带有愤怒,radeon或radeonhd驱动程序的ATi卡,那么您正在使用开源驱动程序。

GLUT将成为工作计划的最短途径。否则,您需要编写代码以自行创建OpenGL上下文(特定于操作系统)。

如果您仍有问题,请告诉我们更多关于不适合您的事情。

编辑以下是一些可能相关或有用的示例命令/代码。

海湾合作委员会编制:

gcc -lGL glprogram.c -o glprogram

包括:

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

答案 1 :(得分:1)

如果给出正确的包装,它应该只是开箱即用。

也就是说,这是Build-Depends的相关块:用于在rgl上构建R包(在Debian的OpenGL设备上提供)。由于Ubuntu使用相同的设置来构建包,所以你应该下注:

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

|意味着替代方案,因此您可以使用基于mesa的软件包或与您的图形卡匹配的软件包(如各种nvidia- *软件包)。

从某处抓取一些OpenGPl示例并尝试一下。

答案 2 :(得分:0)

我对Linux领域的帮助不大。而且我在OpenGL方面落后于时代。但是,它看起来像NeHe has a new set of tutorials,它们正在组合一些不错的基本代码。

正如他们在网站上所说:

  

在编写新教程时,我们有   几个目标:

     
      
  • 使用干净,简单且一致的编码标准书写
  •   
  • 使用现代C ++编写
  •   
  • 完全跨平台(毕竟这是OpenGL的力量)
  •   
  • 根据我们的基本代码启发人们提交自己的课程
  •   

所以我强烈建议至少尝试一下他们的代码。 NeHe有着创建一些非常好的教程的悠久传统。

答案 3 :(得分:0)

你正朝着正确的方向前进。我使用Eclipse CDT + SDL + openGL在Ubuntu Linux下开发我的应用程序(我使用本教程进行设置:http://www.ferdychristant.com/blog/articles/DOMM-72MPPE)然后使用Dev C ++在Windows下成功编译了我的应用程序