1

不知何故,我无法在多个头文件中获得 Glew。它只是抱怨 Gl 在 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扩展名。

我如何也可以glew.h在 GameObject 中获得?

4

2 回答 2

0

应该是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,并且glGetString(GL_EXTENSIONS)在启动时看到 glew 调用了数百次。

于 2011-03-07T20:59:17.450 回答
0

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

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

#ifndef _STDAFX_H_
#define _STDAFX_H_

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

#endif

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

于 2011-03-07T22:20:08.420 回答