2013-12-11 30 views
0

我有着色器和openGL的問題。每當我嘗試使用它們(即使是簡單的函數,如glCreateShader或glCreateProgram),我的編譯器(MinGW 4.6.1)告訴我他們還沒有被定義。爲什麼OpenGL着色器函數不能被定義?

連GLEW都不能正確編譯。例如,編譯器顯然不知道GLchar。另一方面,幾乎所有其他重要的OpenGL函數(與着色器無關)似乎運行良好,沒有任何問題。奇怪的是,當我查看gl.h等時,我看不到定義的着色器函數,所以編譯器可能是正確的。我可以有一個OpenGL標頭的複雜副本,或者我可能做錯了什麼?

+0

Microsoft Windows附帶一個實現OpenGL 1.1的庫和頭文件。如果沒有GLEW,或者手動在運行時手動加載擴展,那麼您將無法訪問GLSL(OpenGL 2.0中的核心,從OpenGL 1.4開始直接擴展)。這是Installable Client Drivers(基本上是你的顯示驅動程序附帶的)在Windows上將OpenGL擴展到1.1之外的責任,但是此擴展是在運行時完成的,而不是編譯/鏈接時完成的。 –

回答

0

GLEW是你眼前的問題。首先得到這個工作,然後你可以看到更新的OpenGL擴展。着色器函數不在gl.h中。我無法讓GLEW建立自己,但確實讓GL3W工作。我發現我無法在gl3w.h之前放入freeglut.h,並且在freeglut.h之前必須包含stdlib.h。我發現opengl-tutorial org中的教程對開始使用着色器非常有幫助。

+0

謝謝你的幫助,這肯定會把我推向正確的方向。 (: – user2706033