[visual-studio]问题将移植到 Windows 的 OpenGL 应用程序

发布时间: 2014/2/26 21:33:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想将一个 OpenGL 应用程序移动到 Windows。

据我了解 Windows 有一个体面的 OpenGL 实现。但我开始以为它不会......

具体地说,我使用数组缓冲区和glDrawArrays

当我试图编译我的代码在 Visual Studio 2008 专业版时,我收到下面的错误:

vertexbuffers.cpp(31) : error C3861: 'glGenBuffers': identifier not found
vertexbuffers.cpp(32) : error C2065: 'GL_ARRAY_BUFFER' : undeclared identifier
vertexbuffers.cpp(32) : error C3861: 'glBindBuffer': identifier not found
vertexbuffers.cpp(33) : error C2065: 'GL_ARRAY_BUFFER' : undeclared identifier
vertexbuffers.cpp(33) : error C2065: 'GL_STATIC_DRAW' : undeclared identifier
vertexbuffers.cpp(33) : error C3861: 'glBufferData': identifier not found

审议的时候 <GL\gl.h> (载于 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl ),我看到了:

/* ClientArrayType */ 
/*      GL_VERTEX_ARRAY */
/*      GL_NORMAL_ARRAY */
/*      GL_COLOR_ARRAY */

更新,但它似乎是那些金维他定义了其他地方。

我怎么生成缓冲区,如果我不能访问到这些职能?

本文档不会说这些数组类型被禁用。我怎么进入真正的实施对 OpenGL 在 Windows 上?

解决方法 1:

#defines 被注释掉,在头文件中每当他们否则会重复。看看 gl.h 1054 线:

/* vertex_array */
#define GL_VERTEX_ARRAY                   0x8074

如果此 #define 是实际丢失,那么你也许应该用新鲜副本替换该文件。

如果你看看glGenBuffers 的文档你会看到它只是可用在 OpenGL 1.5 和更高。Windows 的头文件只附带了 OpenGL 1.2 和应使用扩展机制来访问的较新的功能。如果您调用wglGetProcAddress函数名称,如

void (__stdcall *glGenBuffers)(GLsizei,GLuint*) =
    wglGetProcAddress("glGenBuffers");

然后你有指向函数的指针。

官方微信
官方QQ群
31647020