C++ VS2012 express中未定义OpenGL函数
我试图在Visual Studio 2012 express中使用一些OpenGL函数,我的代码如下所示:C++ VS2012 express中未定义OpenGL函数,c++,opengl,visual-studio-2012,C++,Opengl,Visual Studio 2012,我试图在Visual Studio 2012 express中使用一些OpenGL函数,我的代码如下所示: #include <Windows.h> #include <iostream> #include <gl/GL.h> #include <fstream> void saveScreen() { //code to define some variables, nWidth, nHeight and Buffer. glreadbuf
#include <Windows.h>
#include <iostream>
#include <gl/GL.h>
#include <fstream>
void saveScreen()
{
//code to define some variables, nWidth, nHeight and Buffer.
glreadbuffer ( GL_BACK ); //which buffer we are reading from.
glreadpixels ( 0, 0, nWidth, nHeight, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *Buffer);
//do something with buffer data
return;
}
#包括
#包括
#包括
#包括
作废保存屏幕()
{
//代码定义一些变量,nWidth,nHeight和Buffer。
glreadbuffer(GL_BACK);//从哪个缓冲区读取。
glreadpixels(0,0,nWidth,nHeight,GL_RGB,GL_无符号字节,(GLvoid*缓冲区);
//处理缓冲区数据
返回;
}
根据互联网研究,我的代码是正确的,除了glreadpixels显然希望有更多的表达式和“,”,但我认为我自己可以解决这个问题
当我尝试编译和运行时,会出现错误,说glreadbuffer和glreadpixels都未定义。除了#包括windows.h和gl/gl.h和OpenGL应该可以工作之外,我找不到任何东西告诉我该做什么
提前感谢您的帮助:)
编辑:
感谢回复,我在链接器的附加依赖项中添加了以下行:
opengl32.lib
glu32.lib
并正确地将函数调用大写
这似乎解决了问题。OpenGL中不存在函数
glreadbuffer()
和glreadpixels
。API使用CamelCase函数名样式,因此这些函数名拼写为glReadBuffer()
和glReadPixels()
这就是在visual studio 12中正确链接的方式:
首先创建一个名为“dev”(或任何名称)的文件夹。在该文件夹中,您提取“freeglut”(仅当您需要一个窗口工具包时)和“glew”(openGL扩展wrangler,这将加载gl函数)
然后在VS12中打开一个新项目,右键单击项目->属性
在VC++属性下,单击“包含目录”,并将路径添加到dev/glew/Include文件夹和dev/freeglut/Include。确保您的路径100%正确!
然后单击“库目录”并添加这两个路径:dev/glew/lib和dev/freeglut/lib
然后转到C/C++并单击其他include目录并添加这两个路径:dev/glew/include和dev/freeglut/include。
然后转到链接器并在“附加库目录”中添加库文件夹这是一个棘手的问题,因为您需要链接到正确的版本:\dev\glew\lib\Release\Win32
然后再次尝试您的代码,如果不起作用,请尝试来自internet的源代码。
此外,如果您复制了文件夹而未更改其名称,则应包括“GL/glew.h”
这些步骤对于使用openGL的每个项目都是必需的。您也需要链接openGL库(它提供函数的定义)。仅供参考:Windows和非MacOS X Unix和Linux上的openGL头的情况是
GL/GL.h
而不是相反(这在Windows上并不重要,但在MacOS X上它是OpenGL/gl.h