OpenGL学习随笔(一)

OpenGL是一个3D图形库,由SGI发起并由khronosgroup维护。它为开发者提供了一个虚拟的3D世界,允许轻松地绘制3D图像,而无需考虑转换到2D显示的过程。OpenGL不是窗口系统,其表现依赖于操作系统和驱动的支持。为了跨平台开发,通常会配合使用GLUT。
OpenGL是什么?OpenGL只是一个3D图形库,最早由SGI发起,目前由khronos group维护。本质上我们显示设备仍然是2D的,但OpenGL给我们虚拟了一个3D世界,基于OpenGL的API我们可以方便的绘制3D图像,还不需要关心这些3D图像是如何被转换至2D平面来显示的。

由于OpenGL并不是一个窗口系统,所以将OpenGL的输出送至本地窗口系统显示是因平台而异的。但至少目前Mac, Windows, X11(Unix/Linux)都提供了对OpenGL的支持。

怎样获取OpenGL?由于OpenGL标准的制定者仅仅是定义了规范,所以真正可以用于编辑开发的OpenGL二进制库是由操作系统提供的。如Windows提供了opengl32.dll。

由于OpenGL对上需要窗口系统提供支持,对下需要OS, 驱动提供支持,所以一个OpenGL在一个平台上的表现很大程度上取决于OS是否提供足够的支持。但无论如何OpenGL是目前唯一的跨平台3D标准,所有不希望只绑死在微软这颗树上的3D应用开发商都会选择OpenGL。而微软这几年也着手改善了OpenGL在Windows上的性能。

虽然OpenGL是跨平台的,但有过编写跨平台软件经验的人都知道,真正想开发一个跨平台的3D应用程序,仅有OpenGL是远不够的,至少在OpenGL与本地窗口系统对接这一块就需要一套跨平台接口,而这个接口的事实标准就是GLUT。glut的开发包可以在官方网站下载(http://www.opengl.org/resources/libraries/glut/),链接库是glut32.dll。

glut最早是Mark Kilgard用于redbook第二版中的样例写作时而搞出的一套接口,简化各平台上opengl与native window system对接的工作,由于这套接口的确比较简单好用,glut被广泛流行,成为了跨平台的事实标准。但自1998年之后,M. Kilgard就没有再更新过glut。由于glut在发布权限上的限制,开源社区无法将其与其它开源作品一起发布,加之M. Kilgard不再对glut进行更新,于是有了freeglut,它完全开源并遵循X-Consortium license。目前最新的glut版本是2.4。

使用glut开发一个OpenGL程序的步骤如下:

//初始化glut
glutInit(&argc, argv);

//设置glut(可选)
...

//创建窗口并与OpenGL绑定
glutCreateWindow(argv[0]);

//设置绘图回调函数(相当于处理WM_PAINT)
glutDisplayFunc(display);

//设置重绘回调函数(当窗口尺寸发生改变时)
glutReshapeFunc(reshape);

//启动消息循环
glutMainLoop();

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值