5

FreeGLUT を使用して、非常に単純な「Hello world」OpenGL 3.3 プログラムをコンパイルしようとしています。私が見つけたすべてのチュートリアルには、ヘッダー「gl3.h」が含まれています。問題は、そのようなヘッダー ファイルがないことです。

$ ls -l /usr/include/GL/
total 2164
-rw-r--r-- 1 root root   8797 20 janv. 17:44 freeglut_ext.h
-rw-r--r-- 1 root root    681 20 janv. 17:44 freeglut.h
-rw-r--r-- 1 root root  26181 20 janv. 17:44 freeglut_std.h
-rw-r--r-- 1 root root 837247 27 janv. 12:55 glew.h
-rw-r--r-- 1 root root 656589 21 mars  18:07 glext.h
-rw-r--r-- 1 root root  84468 21 mars  18:07 gl.h
-rw-r--r-- 1 root root 128943 21 mars  18:07 gl_mangle.h
-rw-r--r-- 1 root root  17255 21 mars  18:07 glu.h
-rw-r--r-- 1 root root   3315 21 mars  18:07 glu_mangle.h
-rw-r--r-- 1 root root    639 20 janv. 17:44 glut.h
-rw-r--r-- 1 root root  62741 27 janv. 12:55 glxew.h
-rw-r--r-- 1 root root  43887 21 mars  18:07 glxext.h
-rw-r--r-- 1 root root  17170 21 mars  18:07 glx.h
-rw-r--r-- 1 root root   4706  3 févr. 13:33 glxint.h
-rw-r--r-- 1 root root   3463 21 mars  18:07 glx_mangle.h
-rw-r--r-- 1 root root   2086  3 févr. 13:33 glxmd.h
-rw-r--r-- 1 root root  80979  3 févr. 13:33 glxproto.h
-rw-r--r-- 1 root root  11246  3 févr. 13:33 glxtokens.h
drwxr-xr-x 2 root root   4096 14 avril 14:03 internal
-rw-r--r-- 1 root root   8497 21 mars  18:07 osmesa.h
-rw-r--r-- 1 root root  51274 21 mars  18:07 vms_x_fix.h
-rw-r--r-- 1 root root  59403 27 janv. 12:55 wglew.h
-rw-r--r-- 1 root root  41377 21 mars  18:07 wglext.h
-rw-r--r-- 1 root root   4468 21 mars  18:07 wmesa.h

では、と/usr/include/しかありません。いくつかのチュートリアルで見つけたものはありません。GLGLESGLES2GL3

nvidiaNVIDIA グラフィック カード (クローズド ソース ドライバー)を搭載した Arch Linux x86_64 で実行しています。

プログラムに OpenGL API と FreeGLUT API を組み込む方法は次のとおりです。

#define GL3_PROTOTYPES 1
#include <GL/gl.h>
#include <GL/freeglut.h>

しかし、コードはコンパイルされません:

$ g++ -pipe -g -Wall -Wextra -pedantic -I. -IHeaders -c Sources/Main.cpp -o Temp/Objects/Main.o 
Sources/Main.cpp: In function ‘int main(int, char**)’:
Sources/Main.cpp:107:59: error: ‘glVertexAttribPointer’ was not declared in this scope
Sources/Main.cpp:108:30: error: ‘glEnableVertexAttribArray’ was not declared in this scope
Sources/Main.cpp:114:35: error: ‘glUseProgram’ was not declared in this scope
Sources/Main.cpp:138:31: error: ‘glDisableVertexAttribArray’ was not declared in this scope

OpenGL 2 ヘッダーを含めたようです! しかし、繰り返しになりますが、私のシステムには OpenGL 3 ヘッダーが見つかりませんでした。Arch リポジトリと AUR を調べましたが、うまくいきませんでした。

ご協力ありがとうございました!

4

2 に答える 2

7

GL3.h は必要ありません。GL3.h は非推奨の機能をすべて取り除きました。したがって、gl.h代わりに含めるだけですgl3.h。ダウンロードして手動でコピーすること/usr/include/GL/は実際の解決策ではありません。動作しますが、mesaパッケージに追加するとどうなりgl3.hますか? パッケージマネージャーは競合を見つけます。gl3.hをプロジェクトまたはホーム ディレクトリに追加して $PATH に追加するか、-I フラグを使用することをお勧めします。

于 2012-05-07T12:39:06.050 に答える
0

grepglVertexAttribPointer、glEnableVertexAttribArray、glUseProgram、およびglDisableVertexAttribArrayの場合、これらがとに含まれていることがわかりglext.hますglew.h。これらのヘッダーの1つを含めて、再度コンパイルしてみてください。

于 2012-05-01T15:44:18.453 に答える