このチュートリアルに従って、C++ を使用して Linux マシンで OpenGL を動作させようとしています。
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
。ハードウェアアクセラレーションがあります。
- c ++を使用してOpenGLを機能させるにはどうすればよいですか
EDIT両方の回答を組み合わせて使用すると、機能することが証明されました。具体的には、次のことを行いました。
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
働いたのか説明してください