2011-08-12 43 views
1

你如何在你的代碼中實現GLEE,以便加載在包含文件中使用的擴展?使用GLEE w/includes?

例如,我有一個使用cygwin和GCC的windows構建環境,並鏈接到GLEE,GLUT和opengl32的庫。

在我的主文件中的包括是..

#include <windows.h> 
#include <stdio.h> 

#include <GL/GLee.h> 
#include <GL/glut.h> 

#include "SampleUtils.h" 
#include "LineShaders.h" 

SampleUtils.h聲明利用OpenGL擴展,如glCreateShader,其在SampleUtils.cpp實現的方法。但是當我嘗試構建這些文件時,擴展名是未聲明的。我嘗試了幾種不同的方法。

如包括SampleUtils

#include <GL/gl.h> 
#include <GL/glext.h> 

導致未申報的錯誤

#include <GL/GLee.h> 

其拋出,似乎涉及到的事實,GLEE已經被納入的錯誤一長串。

我可以通過在主文件中實現這些方法來加載相同的擴展,但無法從包含的文件中加載它們。這是如何處理的?

+1

你在爲Linux,Win32或其他軟件構建嗎?另外,GLee似乎被放棄了,所以你可能想去[其他](http://www.opengl.org/wiki/Extension_Loading_Library)。 –

+1

Win32。 Genpfault讓我直觀。沒有爲包含的文件定義WIN32。但正如你可能從我的另一個問題中得到的,我也在使用Android中的OpenGL ES。 Android環境已經預先配置好了,現在我遇到了很多這樣的基本問題,試圖在Windows中進行相同的設置。很多學習。 – olo

回答

0

查找範圍GLee.h:55

#ifdef WIN32 
    #define WIN32_LEAN_AND_MEAN 
    #include <windows.h> 
    #include <GL/gl.h> 
#elif defined(__APPLE__) || defined(__APPLE_CC__) 
    #define GL_GLEXT_LEGACY 
    #include <OpenGL/gl.h> 
#else // GLX 
    #define __glext_h_ /* prevent glext.h from being included */ 
    #define __glxext_h_ /* prevent glxext.h from being included */ 
    #define GLX_GLXEXT_PROTOTYPES 
    #include <GL/gl.h> 
    #include <GL/glx.h> 
#endif 

無論你#include "GLee.h"#includegl.hglext.h,或windows.h

+0

是的。這就是我期望的文檔,但如果我只在SampleUtils中包含Glee.h,g ++會拋出一長串錯誤,例如.. /usr/lib/gcc/i686-pc-cygwin/3.4.4/ ../../../../include/w32api/GL/GLee.h:827:error:'XID'沒有指定類型 /usr/lib/gcc/i686-pc-cygwin/3.4。 4 /../../../../ include/w32api/GL/GLee.h:832:error:'XID'沒有指定類型 /usr/lib/gcc/i686-pc-cygwin/3.4.4 /../../../../ include/w32api/GL/GLee.h:836:error:'Bool'沒有命名類型等。 – olo

+0

我也嘗試刪除所有GL和/或來自包含文件的Glee頭文件,以防這些文件從父文件繼承。但是,這隻會導致未聲明的錯誤,正如您所期望的那樣。因此,包含文件中的GL頭文件會導致錯誤,單獨的Glee頭文件會導致錯誤,並且沒有GL或Glee頭文件也會導致錯誤。包含哪些方法應該實現? - #include ? – olo

+0

@olo:如果它正在打印第827行,那麼表頭採用GLX路徑,這意味着'WIN32'沒有被定義。嘗試在'gcc'調用中添加'-DWIN32',或者在'#inc''GLEE之前手動'#define WIN32'。將來在您的問題中編譯錯誤日誌將會很有幫助。 – genpfault