在多个文件中使用 Glew

发布于 2024-10-20 12:07:28 字数 514 浏览 2 评论 0原文

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

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

  1. Program.h
    包括:"SceneManager.h"
  2. 场景管理器.h
    包括:“GameObject.h”
  3. GameObject.h
    包括:

我确实知道 freeglut 位于 glew 前面,但我想要例如 GL_BGR 扩展。

如何获取 GameObject 中的 glew.h

Somehow I can't get Glew in multiple header files. It is just complaining about Gl is already defined before GLEW.

I have the following file structure in short:

  1. Program.h
    includes: <GL/glew.h>, <GL/freeglut.h> and "SceneManager.h".
  2. SceneManager.h
    includes: "GameObject.h"
  3. GameObject.h
    includes: <GL/glew.h>, <GL/freeglut.h>.

I do understand that freeglut is in front of glew, but I would like to have the GL_BGR extension for example.

How do I get the glew.h in the GameObject as well?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

咆哮 2024-10-27 12:07:28

一定是 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 时进行。

显然,glew 不正确地在标头多重包含防护之外进行了测试。

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

Must be a bug in glew.h.

I use GLee instead, which doesn't have this problem. GLee's test looks like this:

#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_) */

So the tests are only done the first time glee.h is included.

Apparently glew improperly does the tests outside the header multiple inclusion guard.

I switched from glew to GLee the first time I ran an OpenGL trace (glslDevil, actually) and saw glew calling glGetString(GL_EXTENSIONS) hundreds of times at startup.

青春有你 2024-10-27 12:07:28

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

我创建了一个预编译头,其中包含 glew 和 freeglut。它看起来像这样:

#ifndef _STDAFX_H_
#define _STDAFX_H_

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

#endif

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

I did it a bit different myself right now:

I created a precompiled header with glew and freeglut in it. It looks like this:

#ifndef _STDAFX_H_
#define _STDAFX_H_

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

#endif

Could someone confirm if this is a solid and well know method to do so?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文