我正在尝试按照本教程使用 c++ 让 OpenGL 在我的 linux 机器上工作
我正在使用 Ubuntu 12.04 LTS。我有两个包 freeglut3-dev
,mesa-common-dev
我安装的sudo apt-get install package-name1 package-name2
只是为了确保我去了推荐的目录/usr/include/GL
并列出了文件ls
:
freeglut_ext.h freeglut.h freeglut_std.h glext.h gl.h gl_mangle.h glu.h glu_mangle.h glut.h glxext.h glx.h glx_mangle.h internal
我注意到我确实有gl.h
,glut.h
所以我按照教程的推荐测试了示例程序。我下载了 zip 文件,将文件解压缩到同一目录中,然后运行该make
实用程序。这是运行后的一些输出make
g++ -Wall -o cube main.cpp imageloader.cpp -lglut
imageloader.cpp: In function ‘Image* loadBMP(const char*)’:
imageloader.cpp:141:2: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glGenTextures'
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glBindTexture'
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glTexImage2D'
我得到了大约 20 个其他未定义的参考错误。因此,一定是我没有正确安装某些东西,或者缺少文件。我确实注意到我通过运行检查了硬件加速信息,glxinfo
并且我确实有硬件加速。
- 如何让 OpenGL 使用 C++ 工作
编辑如果我使用这两个答案的组合证明它是有效的:具体来说,我做了以下事情:
someonespc:~/c++$ ls
imageloader.cpp imageloader.h main.cpp Makefile Makefile~ vtr.bmp
d2b2@d2b2-Aspire-7745G:~/c++$ g++ -Wall -lGL -o cube main.cpp imageloader.cpp -lglut -lGLU
imageloader.cpp: In function ‘Image* loadBMP(const char*)’:
imageloader.cpp:141:2: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
someonespc:~/c++$ ls
cube imageloader.cpp imageloader.h main.cpp Makefile Makefile~ vtr.bmp
然后我跑了./cube
,它奏效了!请解释为什么投入-lGL
和-lGLU
工作