【问题标题】:Using Glew in multiple files在多个文件中使用 Glew
【发布时间】:2011-03-07 20:16:14
【问题描述】:

不知何故,我无法在多个头文件中使用 Glew。它只是抱怨 Gl 在 GLEW 之前已经定义了。

简而言之,我有以下文件结构:

  1. 程序.h
    包括:<GL/glew.h><GL/freeglut.h>"SceneManager.h"
  2. 场景管理器.h
    包括:"GameObject.h"
  3. GameObject.h
    包括:<GL/glew.h><GL/freeglut.h>

我明白 freeglut 是在 glew 前面,但我想拥有 GL_BGR 扩展名。

如何在 GameObject 中也获得 glew.h

【问题讨论】:

    标签: c++ opengl freeglut glew


    【解决方案1】:

    必须是glew.h 中的错误。

    我用 Glee 代替,它没有这个问题。 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 时进行。

    显然,在标头多重包含保护之外的测试不正确。

    我第一次运行 OpenGL 跟踪(实际上是 glslDevil)时从 glew 切换到 GLee,并看到 glew 在启动时调用了数百次 glGetString(GL_EXTENSIONS)

    【讨论】:

      【解决方案2】:

      我现在自己做的有点不同:

      我创建了一个带有 glew 和 freeglut 的预编译头文件。它看起来像这样:

      #ifndef _STDAFX_H_
      #define _STDAFX_H_
      
      #include <GL/glew.h>
      #include <GL/freeglut.h>
      
      #endif
      

      有人可以确认这是否是一种可靠且众所周知的方法吗?

      【讨论】:

        猜你喜欢
        • 2021-01-01
        • 2014-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-25
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        相关资源
        最近更新 更多