我正在使用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();
否则将不会绘制任何内容。