在多个文件中使用 Glew
不知何故,我无法在多个头文件中获取 Glew。它只是抱怨 Gl 已经在 GLEW 之前定义了。
简而言之,我有以下文件结构:
- Program.h
包括:
、
和"SceneManager.h"
。 - 场景管理器.h
包括:“GameObject.h”
- 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:
- Program.h
includes:<GL/glew.h>
,<GL/freeglut.h>
and"SceneManager.h"
. - SceneManager.h
includes:"GameObject.h"
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一定是
glew.h
中的错误。我用GLee代替,没有这个问题。 GLee 的测试如下所示:
因此,测试仅在第一次包含
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:
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.我现在自己做的有点不同:
我创建了一个预编译头,其中包含 glew 和 freeglut。它看起来像这样:
有人可以确认这是否是一种可靠且众所周知的方法吗?
I did it a bit different myself right now:
I created a precompiled header with glew and freeglut in it. It looks like this:
Could someone confirm if this is a solid and well know method to do so?