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();
由于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();
OpenGL是一个3D图形库,由SGI发起并由khronosgroup维护。它为开发者提供了一个虚拟的3D世界,允许轻松地绘制3D图像,而无需考虑转换到2D显示的过程。OpenGL不是窗口系统,其表现依赖于操作系统和驱动的支持。为了跨平台开发,通常会配合使用GLUT。
3792





