当前位置:  开发笔记 > 编程语言 > 正文

无法将OpenGL应用程序移植到Windows

如何解决《无法将OpenGL应用程序移植到Windows》经验,为你挑选了2个好方法。

我正在尝试将OpenGL应用程序移动到Windows.

据我所知,Windows有一个不错的OpenGL实现.但我开始认为它不......

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

当我尝试在Visual Studio 2008 Pro中编译我的代码时,我收到以下错误:

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

当我检查(包含在内C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl)时,我看到:

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

更新,但似乎那些含量在其他地方定义.

如果我无法访问这些功能,我应该如何生成缓冲区?

该文档并未说明这些数组类型已被禁用.如何在Windows上访问OpenGL上的实际实现?



1> BigSandwich..:

你可能会给GLEW一个机会:

http://glew.sourceforge.net/

我很确定我在过去的某个时候使用它,并使这种事情变得更容易和更便携.



2> jheriko..:

无论何时重复,都会在头文件中注释掉#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");

那么你有一个指向该函数的指针.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有