[OpenGL]VS2010配置OpenGL开发环境

摘要:
OpenGL的图形库函数封装在动态链接库OpenGL32.DLL中,开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。OpenGL函数命令方式十分有规律,每个库函数均有前缀gl、glu、aux,分别表示该函数属于OpenGL基本库、实用库或辅助库。GLUT代表OpenGL应用工具包,是一个与窗口系统无关的工具包。vs2010-OpenGL环境配置下载GLUT。

opengl概述

OpenGL(OpenGraphicsLibrary)是一个跨编程语言、跨平台的专业图形程序接口。
OpenGLSGI公司开发的一套计算机图形处理系统,是图形硬件的软件接口,任何一个OpenGL应用程序无须考虑其运行环境所在平台与操作系统,在任何一个遵循OpenGL标准的环境下都会产生相同的可视效果。OpenGL不是一种编程语言,而是一种API(ApplicationProgrammingInterface,应用程序编程接口)

OpenGL的图形库函数封装在动态链接库OpenGL32.DLL中,开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。OpenGL函数命令方式十分有规律,每个库函数均有前缀gl、glu、aux,分别表示该函数属于OpenGL基本库、实用库或辅助库。

  • OpenGL核心库函数:100+个,以gl作为前缀;用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。
  • OpenGL实用库函数:43个,以glu作为前缀;实用函数库是比核心库更高一层的函数库;由于OpenGL是一个图形标准,是独立于任何窗口系统或操作系统的,在OpenGL中没有提供窗口管理和消息事件响应的函数,也没有鼠标和键盘读取事件的功能,所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。这类函数以”aux”作为前缀。值得一提的是,目前AUX编程辅助库已经很大程度上被GLUT库取代了。以下介绍以GLUT库为例。
  • OpenGL辅助库函数:31个,以aux作为前缀;
  • Windows专用库函数(WGL):6个,以wgl作为前缀;
  • Win32API函数(WGL):5个,无前缀。
  • GLUT代表OpenGL应用工具包(OpenGLUtilityToolkit),是一个与窗口系统无关的工具包。它作为AUX库的功能更强的替代品,用于隐藏不同窗口系统API的复杂性。GLUT的子程序的前缀使用”glut”。

vs2010-OpenGL环境配置

  1. 下载GLUTWindows环境下的GLUT下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
  2. 将下载的压缩包解开,将得到5个文件:glut.hglut.libglut32.libglut.dllglut32.dll
  3. glut.h放到(C:ProgramFilesMicrosoftSDKsWindowsv7.0AIncludegl)这个文件夹中.
  4. glut.libglut32.lib放到静态函数库所在文件夹中.(安装目录VClib)
  5. glut.dllglut32.dll放到操作系统所在目录下面的system32文件夹内.(C:Windowssystem32)

测试配置环境

  1. 打开VS2010,选择File->New->Project,然后选择Win32ConsoleApplication,选择一个名字OpenGLTest,然后按OK
  2. 在弹出的对话框左边点ApplicationSettings,找到Emptyproject并勾上,选择Finish
  3. 然后向该工程添加一个代码文件,取名为OpenGLTest.cpp
  4. OpenGLTest.cpp中添加代码
#include<gl/glut.h>
//#include<gl/glu.h>  //glut.h自动包含了glu.h 和 gl.h
//#include<gl/gl.h>
/*<gl/glut.h>内部有
#pragma comment (lib, "winmm.lib")     // link with Windows MultiMedia lib 
#pragma comment (lib, "opengl32.lib")  // link with Microsoft OpenGL lib 
#pragma comment (lib, "glu32.lib")     // link with OpenGL Utility lib 
#pragma comment (lib, "glut32.lib")    // link with Win32 GLUT lib 
*/
void renderScene(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	glBegin(GL_TRIANGLES);
	glVertex3f(-0.5,-0.5,0.0);
	glVertex3f(0.5,0.0,0.0);
	glVertex3f(0.0,0.5,0.0);
	glEnd();
	glutSwapBuffers();
}
int _tmain(int argc, _TCHAR* argv[])
{
	glutInit(&argc, (char**) argv);//glutInit用来初始化GLUT库并同窗口系统对话协商。
	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);//glutInitDisplayMode用来确定所创建窗口的显示模式。参数GLUT_SINGLE 指定单缓存窗口,这也是缺省模式,对应的模式为GLUT_DOUBLE 双缓存窗口。参数GLUT_RGB指定颜色RGBA模式,这也是缺省模式,对应的模式为GLUT_INDEX 颜色索引模式窗口。
	glutInitWindowPosition(100,100);//glutInitWindowPosition 设置初始窗口的位置,第一个参数为窗口左上角x的坐标,第二个参数为窗口左上角y的坐标,以像素为单位。屏幕的左上角的坐标为(0,0),横坐标向右逐渐增加,纵坐标向下逐渐增加。
	glutInitWindowSize(320,320);//glutInitWindowSize 初始化窗口的大小,第一个参数为窗口的宽度,第二个参数为窗口的高度,以像素为单位。
	glutCreateWindow("Hello OpenGL");//glutCreateWindow 创建顶层窗口,窗口的名字为扩号中的参数。
	glutDisplayFunc(renderScene);//glutDisplayFunc 注册当前窗口的显示回调函数。当一个窗口的图像层需要重新绘制时,GLUT将调用该窗口的的显示回调函数。在此例中的renderScene就是显示回调函数,显示回调函数不带任何参数,它负责整个图像层的绘制。我们的大部分工作将集中在这个函数中。
	glutMainLoop();//glutMainLoop 进入GLUT事件处理循环。glutMainLoop函数在GLUT程序中最多只能调用一次,它一旦被调用就不再返回,并且调用注册过的回调函数。所以这个函数必须放在注册回调函数的后面,此例中为glutDisplayFunc 。
	return 0;
}
效果: [OpenGL]VS2010配置OpenGL开发环境第1张

免责声明:文章转载自《[OpenGL]VS2010配置OpenGL开发环境》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA 生成PDF报表()pkg-config 用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ios 编译openssl支持arm64(转)

最近在编译支付宝 快捷支付(无线) ios 端的时候发现demo不支持arm64。在网上找了下,看到客服说是openssl的库文件不支持arm64,于是自己编译了支持arm64的库文件,发现还是不行,提示原来淘宝的库文件也不支持。问他们客服,缺迟迟不给出解决方案,到后面居然连话都不回了。。 以上都是题外话,现在来看看如何编译支持arm64的openssl...

最简单的7z API接口

7z官网提供的SDK下载地址:http://www.7-zip.org/sdk.html 我觉得还是有点复杂,就把里面的例子LzmaUtil改了改,并把不需要的其它源文件删掉了,现在,使用此源码生成的dll、lib,就可以通过以下的两个接口对文件进行压缩、解压缩了: MY_STDAPI LzmaCompress(char* pSrcFile, char*...

OpenCV导向滤波(引导滤波)实现(Guided Filter)代码,以及使用颜色先验算法去雾

 论文下载地址:http://research.microsoft.com/en-us/um/people/jiansun/papers/GuidedFilter_ECCV10.pdf 本文主要介绍导向滤波,但是在网上看这算法还能去雾,不知道是具体是怎么利用导向滤波实现去雾的,希望过来人指点迷津,这块主要是重写了导向滤波应用于彩色图像的部分代码,希望与大家...

Klimt 特点 与OpenGL和OpenGL|ES 对比及其关系

http://read.newbooks.com.cn/info/129308.html Klimt (原名为SoftGL)是一个开源的3D图形库,主要针对的PDA和移动通信设备的应用。它的API和OpenGL和OpenGL|ES非常相像。开发 Klimt的组织并没有对其API的一致性进行声明。不过,Klimt可以兼容Coin3D的程序,Coin3D是建立...

原有vue项目接入typescript

原有vue项目接入typescript 为什么要接入typescript javascript由于自身的弱类型,使用起来非常灵活。 这也就为大型项目、多人协作开发埋下了很多隐患。如果是自己的私有业务倒无所谓,主要是对外接口和公共方法,对接起来非常头疼。主要表现在几方面: 参数类型没有校验,怎么传都有,有时会出现一些由于类型转换带来的未知问题。 接口文档不...

Linux上安装ImageMagick和JMagick

一、软件列表 ImageMagick-6.7.1-0.tar.gz jmagick-6.4.0-src.tar.gz jpegsrc.v6b.tar.gz libpng-1.5.4.tar.gz tiff-3.8.2.tar.gz freetype-2.3.11.tar.gz zlib-1.2.5.tar.bz2 二、安装过程 注意:如果安装过程中因为gc...