【发布时间】:2011-03-03 05:19:36
【问题描述】:
我正在使用 Windows,我注意到很多函数都是灰色的,因为我猜 #ifdef GL_GLEXT_PROTOTYPES 没有定义。其中之一是 VBO 扩展。我应该只定义 GL_GLEXT_PROTOTYPES 吗?否则我怎么能使用 VBO,因为我使用的是 OpenGL32.dll(我希望我的应用程序没有默认情况下不包含在 Windows 中的 dll 依赖项。)谢谢
【问题讨论】:
我正在使用 Windows,我注意到很多函数都是灰色的,因为我猜 #ifdef GL_GLEXT_PROTOTYPES 没有定义。其中之一是 VBO 扩展。我应该只定义 GL_GLEXT_PROTOTYPES 吗?否则我怎么能使用 VBO,因为我使用的是 OpenGL32.dll(我希望我的应用程序没有默认情况下不包含在 Windows 中的 dll 依赖项。)谢谢
【问题讨论】:
是的,这很正常,预计会有类似的情况:
#define GL_GLEXT_PROTOTYPES
#include <GL/GL.h>
如果您尝试编写符合 OpenGL 3 的代码,您通常会将其更改为:
#define GL_GLEXT_PROTOTYPES 1
#define GL3_PROTOTYPES 1
#include <GL3/GL3.h>
【讨论】:
我建议您使用 GLEW 来解决这个问题。
说来话长,但要继续说,Windows 的 OpenGL 库仅公开 OpenGL 1.1 入口点,因此该版本以外的所有函数都使用 wglGetProcAddress 加载。 GLEW 通过这样做解决了这个问题。
只需链接到 GLEW 和 GLU/GLUT(如果您使用它们)。
【讨论】:
如果您使用的是 Glew OpenGL 扩展,请确保初始化它。
glewInit();
否则什么都画不出来。
【讨论】:
您可以使用glad为您提供glGenBuffers。
【讨论】: