2011-03-07 50 views
1

不知何故,我無法在多個頭文件中獲得Glew。它只是抱怨Gl已經在GLEW之前定義過了。在多個文件中使用Glew

我在短以下文件結構:

  1. Program.h
    包括:<GL/glew.h><GL/freeglut.h>"SceneManager.h"
  2. SceneManager.h
    包括:"GameObject.h"
  3. GameObject.h
    包括:<GL/glew.h><GL/freeglut.h>

我不明白,freeglut是GLEW的面前,但是我想有GL_BGR擴展的例子。

我該如何獲得GameObject中的glew.h

回答

0

我做了一點不同的自己現在:

我創建了一個預編譯的頭與GLEW和它freeglut。它看起來像這樣:

#ifndef _STDAFX_H_ 
#define _STDAFX_H_ 

#include <GL/glew.h> 
#include <GL/freeglut.h> 

#endif 

有人可以確認,如果這是一個堅實而知名的方法來做到這一點?

0

必須是glew.h中的錯誤。

我用GLee來代替,它沒有這個問題。歡樂的測試看起來是這樣的:

#ifndef __glee_h_ 
#define __glee_h_ 

#ifdef __gl_h_ 
    #error gl.h included before glee.h 
#endif 

#ifdef __glext_h_ 
    #error glext.h included before glee.h 
#endif 

#ifdef __wglext_h_ 
    #error wglext.h included before glee.h 
#endif 

#ifdef __glxext_h_ 
    #error glxext.h included before glee.h 
#endif 

//... 
#endif /* !defined(__glee_h_) */ 

所以測試僅在第一時間完成包括glee.h

顯然glew不正確地測試標題之外的多個夾雜物。

我在第一次運行OpenGL跟蹤(glslDevil,實際上)時從glew切換到GLee,並看到在啓動時數百次呼叫glGetString(GL_EXTENSIONS)