Fra*_*ger 6 c++ windows opengl visual-studio
我正在尝试将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
当我检查<GL\gl.h>(包含在内C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl)时,我看到:
/* ClientArrayType */
/* GL_VERTEX_ARRAY */
/* GL_NORMAL_ARRAY */
/* GL_COLOR_ARRAY */
Run Code Online (Sandbox Code Playgroud)
更新,但似乎那些含量在其他地方定义.
如果我无法访问这些功能,我应该如何生成缓冲区?
该文档并未说明这些数组类型已被禁用.如何在Windows上访问OpenGL上的实际实现?
无论何时重复,都会在头文件中注释掉#defines.看看gl.h的第1054行:
/* vertex_array */
#define GL_VERTEX_ARRAY 0x8074
Run Code Online (Sandbox Code Playgroud)
如果实际上缺少#define,那么您应该用新副本替换该文件.
如果你看一下glGenBuffers的文档,你会发现它只在OpenGL 1.5及更高版本中可用.Windows的头文件仅附带OpenGL 1.2,您应该使用扩展机制来访问较新的功能.如果使用函数名称调用wglGetProcAddress,例如
void (__stdcall *glGenBuffers)(GLsizei,GLuint*) =
wglGetProcAddress("glGenBuffers");
Run Code Online (Sandbox Code Playgroud)
那么你有一个指向该函数的指针.
| 归档时间: |
|
| 查看次数: |
8343 次 |
| 最近记录: |