linux下的opengl编程

linux下的opengl编程

ID:25296094

大小:70.00 KB

页数:16页

时间:2018-11-19

linux下的opengl编程_第1页
linux下的opengl编程_第2页
linux下的opengl编程_第3页
linux下的opengl编程_第4页
linux下的opengl编程_第5页
资源描述:

《linux下的opengl编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux下的OpenGL编程    OpenGL是一个工业标准的三维计算机图形软件接口,它由SGI公司发布并广泛应用于Unix、OS/2、Windows/NT等多种平台,当然也包括Linux。在Windows/NT平台上,一般的开发工具如VC、BC、FortranPowerstation等都支持直接的OpenGL应用的开发;在商用Unix平台上,Motif同样很好的支持OpenGL(毕竟OpenGL最初是工作站上的东西);那么在Linux上呢?  本文不着力于OpenGL编程的方法和技巧,而是把重点放在如何在Linux平台上开发

2、OpenGL程序。介绍支持OpenGL的几个工具包,并辅以详细的实例来阐述。1.Linux下OpenGL编程环境简介  OpenGL不是自由软件,它的版权、商标(OpenGL这个名字)都归SGI公司所有。但在Linux下有OpenGL的取代产品:Mesa。Mesa提供和OpenGL几乎完全一致的接口,对利用OpenGLAPI编程的人来说,几乎感觉不到任何差异。Mesa是遵循GPL协议(部分遵循LGPL协议)的自由软件,而且,正是由于Mesa的自由性,它在对新硬件的支持度等方面都超过了OpenGL。Mesa可以从www.mesa3d

3、.org取得。得到Mesa后,依照说明即可生成编写程序所需要的动态、静态连接库和头文件。  了解OpenGL的读者都知道,OpenGL本身只提供三维图形接口,不具备绘制窗口、接受响应、处理消息等功能。这些功能必须由第三方的开发环境提供,如上面提及的VC等等。有人会想,既然在Motif下可以开发OpenGL程序,那么,使用Linux下的Lesstif也应该可以。是的,的确可以,但不幸的是,Linux下的Lesstif是一个很不成熟的产品,而且也不具有可移植性,所以应用Lesstif开发的人很少。下面我们简单介绍几个常用的工具包。  

4、在Linux下开发OpenGL程序,最常用的工具是GLUT(TheOpenGLUtilityToolkit)。它可以创建一个或多个OpenGL窗口,响应、处理用户的交互操作、简单的弹出式菜单以及一些内置的绘图和字体处理功能。GLUT和OpenGL一样,可以移植于多种平台。由于它良好的表现,现在它已经成为Mesa发布的标准套件之一。  另一个很好的开发工具包是FLTK(FastLightToolKit),这是一个用C++编写的图形界面开发工具。和GTK++、KDE不同,它只关注于图形界面的设计,而尽量不牵涉其他的实际应用。这个特点使

5、得它比其他许多开发工具简练和高效。而且,它同样也是一个具有良好移植性的开发工具。事实上,它现在正引来越来越多人的兴趣,许多商业软件(尤其是致力于开发嵌入式桌面系统的软件)都选用了它作为图形界面的开发工具。关于它的详细情况参见作者的另一篇文章《FLTK---一个优秀的图形界面开发工具包》。在FLTK里有一个组件:Fl_Gl_Window是专门的OpenGL窗口,利用它开发OpenGL程序相当方便。  最后要提的是GTK和KDE,它们是目前在Linux下用的最多的开发工具。GTK本身并不直接支持OpenGL(新的版本是否支持,尚不太清

6、楚),但有人开发了支持OpenGL的Widget,叫做GLAREA,需要的读者可以到网上去查找或者与本文作者联系。KDE提供了对OpenGL的支持,但它的缺陷之一是KDE只运行于Linux系统,不具有可移植性。在这里,我将主要向大家介绍前面两个工具包。2.用GLUT开发OpenGL程序 2.1如何获得  GLUT可以从Mesa中获得,读者也可以直接到它的主页去下载它:                      http://reality.sgi.com/employees/mjk_asd/glut3/glut3.html。按照说

7、明安装后在OpenGL的头文件GL目录下将会有GLUT的头文件glut.h,同时安装的还有库文件libglut.a或libglut.so。有了它们以后,就可以用GLUT来编程了。2.2一个简单的例子下面,我们先看一个简单的例子。这个例子画一个立体的球。/*light.c此程序利用GLUT绘制一个OpenGL窗口,并显示一个加以光照的球。*//*由于头文件glut.h中已经包含了头文件gl.h和glu.h,所以只需要include此文件*/#include#include/*初始化材料属性、

8、光源属性、光照模型,打开深度缓冲区*/voidinit(void){GLfloatmat_specular[]={1.0,1.0,1.0,1.0};GLfloatmat_shininess[]={50.0};GLfloatlight_positio

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。