在VS2017下配置OpenGL

这个方法适合初学者使用,较为简单方便。
第一,你的VS2017一定要安装了C/C++开发组件
可以打开Visual Studio Installer来查看


另外,确定你有安装NuGet包管理器,在单个组件中查看,没有请勾选

glut的库可以点击下面的链接下载
[https://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip](适用windows系统)
也可以到OpenGL官网上下载不同版本的glut库
[https://www.opengl.org/resources/libraries/glut]

下载之后打开压缩包,可以看到如下的文件

解压后,找到你的VS2017的安装目录
我的是E:\Microsoft Visual Studio\2017\Community
可以看到里面的目录

glut.h放到...\VC\Tools\MSVC\14.10.25017\include\gl下(没有gl文件夹就新建一个)
glut.lib,glut32.lib放到...\VC\Tools\MSVC\14.10.25017\lib\x86
glut.dll,glut32.dll放到C:\Windows\SysWOW64下(我的系统是64位的,如果是32位的系统,请放到C:\Windows\System32下)
接下来打开VS2017,新建一个win32控制台项目,选择空项目
如果是最新版的VS2017(2017/11/12)请新建Windows桌面向导

新建项目完成后,点击上方项目选择管理NuGet程序包

选择浏览,搜索nupengl,2个都安装

什么是NuGet?

 用visual studio开发的童鞋们应该都有这样的感受,经常在copy别人的项目后,出现找不到xxx.h,找不到xxx.lib,找不到balabala。甚至还有“模块计算机类型“x86”与目标计算机类型“x64”冲突”,“模块计算机类型“x64”与目标计算机类型“x86”冲突”,各种Link错误等等令人烦躁的提示!
  很多时候都是工程中使用了第三方库,而工程又没有能够自适应的配置文件能帮我们找到这些第三方库造成的,这时候需要程序员在C/C++ ->常规->附加包含目录添加各种头文件路径,链接器 -> 常规 -> 附加库目录 添加各种lib的路径,然后还需要在链接器 -> 输入 -> 附加依赖项填写工程中使用的lib名称。这已经足够烦人了,何况lib还要区分x86/x64,debug/release,vc平台(vc90,vc100 and etc.),排列组合大家都学过吧,这得配置多少次大家自己算吧。稍有不慎就会出错,如果是一个陌生的项目更大大增加出错可能,如果你忘记添加相应的lib而导致无法解析的外部符号,而恰恰你对这个外部符号很陌生并不知道它在哪个lib里,这就尴尬了。
  然而突然有一天,微软说我们做了个NuGet把Package 从工程中分离,以后它帮你管理Package 。
[http://blog.csdn.net/junparadox/article/details/51086374]

是的,再不需要C/C++ ->常规->附加包含目录添加各种头文件路径,不需要在链接器 -> 常规 -> 附加库目录 添加各种lib的路径,也不需要在链接器 -> 输入 -> 附加依赖项输入各种lib名字了。

注意:每次新建项目都要安装一下nupengl.core和nupengl.core.redist

源文件目录下新建cpp文件
输入下面的测试代码

#include<gl/GLUT.H>
void Initial(void)//初始化函数 
{
	glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//白色背景,前3个是RGB,最后是Alpha值,用来控制透明,1.0表示完全不透明
	glMatrixMode(GL_PROJECTION);//OpenGL按照三维方式来处理图像,所以需要一个投影变换将三维图形投影到显示器的二维空间中
	gluOrtho2D(0.0, 200, 0.0, 150.0);//指定使用正投影将一个x坐标在0~200,y坐标0~150范围内的矩形坐标区域投影到显示器窗口

}
void myDisplay(void)//显示回调函数
{
	glClear(GL_COLOR_BUFFER_BIT);//使用glClearColorz中指定的值设定颜色缓存区的值,即将窗口中的每一个像素设置为背景色
	glColor3f(0.0f, 0.0f, 0.0f);//绘图颜色为黑色
	glRectf(50.0f, 100.0f, 150.0f, 50.0f);//图形的坐标,绘制一个左上角在(50,100),右下角在(150,50)的矩形
	glFlush();//清空OpenGL命令缓冲区,强制执行命令缓冲区中所有OpenGL函数
}
int main(int argc, char * argv[])//这是使用glut库函数进行窗口管理
{
	glutInit(&argc, argv);//使用glut库需要进行初始化
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);//设定窗口显示模式,颜色模型和缓存,这里是RGB颜色模型和单缓存
	glutInitWindowPosition(100, 100);//设定窗口的初始位置,屏幕左上角为原点,单位为像素
	glutInitWindowSize(400, 400);//设定窗口的大小
	glutCreateWindow("第一个OpenGL程序——铖伟");//创建一个窗口,参数是窗口标题名
	glutDisplayFunc(&myDisplay);//将myDisplay指定为当前窗口的显示内容函数
	Initial();
	glutMainLoop();//使窗口框架运行起来,使显示回调函数开始工作
	return 0;
}

然后点击运行,就可以看到一个黑色的矩形

posted @ 2017-11-13 00:01  flylinmu  阅读(35370)  评论(8编辑  收藏  举报