glGenBuffers未定义?

17

我正在使用Windows系统,发现很多函数都被灰掉了,因为我猜测 #ifdef GL_GLEXT_PROTOTYPES 没有定义。其中一个是VBO扩展。我应该只定义 GL_GLEXT_PROTOTYPES 吗?否则,我如何使用VBO,因为我正在使用OpenGL32.dll(我希望我的应用程序没有依赖于除Windows默认库之外的任何dll文件)。谢谢

4个回答

24

是的,拥有像这样的东西是很正常和预期的:

#define GL_GLEXT_PROTOTYPES

#include <GL/GL.h>

如果您想编写符合OpenGL 3标准的代码,通常会将其更改为:

#define GL_GLEXT_PROTOTYPES 1
#define GL3_PROTOTYPES 1

#include <GL3/GL3.h>

6
现在我遇到了链接错误,除了opengl32外,还需要包含哪些库? - jmasterx
2
谢谢。我更喜欢这种方法而不是使用GLEW。由于某些原因,GLEW在我的电脑上从来没有成功过(Linux,mesa)。它往往会导致随机的段错误。 - mgiuca

17

我建议您使用GLEW来解决这个问题。

长话短说,Windows的OpenGL库仅公开OpenGL 1.1入口点,因此所有版本超过该版本的函数都通过wglGetProcAddress加载。 GLEW通过执行此操作来解决此问题。

http://glew.sourceforge.net/

只需链接到GLEW和GLU/GLUT(如果使用它们)即可。


2
这需要在所有教程网站上更突出地指明!我一直在避免使用GLEW以减少依赖。 - Nathan Goings

1
你可以使用glad来为您提供glGenBuffers

我没有得到任何配置来返回glGenBuffers。 - IAbstract

0

如果您正在使用Glew OpenGL扩展,请确保对其进行初始化。

glewInit();

否则将不会绘制任何内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接