OpenGL Related Development ToolKits (转载)
OpenGL Related Development ToolKits
Yang Jian
jyang@cad.zju.edu.cn 2003/11/17
OpenGL render tips 的这个题目也比较大,而且具体讲那些内容,我还没有完全确定下来,我先讲一个比较小的题目。
关于这个题目的具体内容我也想了很久,我想介 绍一些大家经常用到的内容。
Glu
Glaux
Glut
OpenGL extension Toolkits
GL2PS
GLtrace
Industry develop Toolkits
1 glu
目 前的版本是glu1.3,我想这方面的内容和参考手册大家一定背得比我还熟。我就多嘴几句。Glu是调用OpenGL API实现的,我们可以使用 VC++6.0的Depends得到验证。我们可以认为它是OpenGL的一个辅助工具包。Glu的基本函数功能可以划分为三个方面:
(1)Transform 辅助函数
gluOth2D, gluLookAt, glProject,gluUnProject,glPickMatrix,gluPerspective
(2)Texture 辅助函数
自动Mipmap纹理生成或者纹理缩放为宽高为2^n
glBuild1DMipMaps
glBuild2DMipMaps
gluScaleImage
(3) 高级OpenGL几何图元生成
Sphere,Cylinder等
任意多边形(无论凸多 边形、或者凹多边形)三角形剖分;
Nurbs曲线和曲面;
Bezier曲线,曲面的定义在OpenGL中已经实 现,glMap*。
2 glaux
这是微软开发的,支持OpenGL初始化工作,窗口管理,消息处理等工作的一个开发包。根据我 的程序跟踪和使用,发现这个开发包包含了大量的错误,many bugs,而且能够引起严重的内存泄漏(memory leak)。
Advice: 尽可能避免使用这个开发包。
3 glut
它是一个跨跨平台windows/Linux/unix/mac的OpenGL辅助开发 包,它主要完成的任务有:
窗口创建与删除;
窗口消息的处理;
键盘鼠标消息回调函数;
OpenGL context的自动管理;
全屏幕程序支持;
一致的弹出式菜单支持;
http://www.opengl.org/developers/documentation/glut/index.html
Advice:它非常适合算法研究。
4 OpenGL extension Toolkits
4.1 SGI’s ogl SDK
关 于OpenGL extension SDK,可以说它一个官方的SDK
http://oss.sgi.com/projects/ogl-sample/sdk.html
42 glux
关于另外一个OpenGL extension SDK
http://w3imagis.imag.fr/Membres/Sylvain.Lefebvre/glux/
模仿glut写的,如果和glut配合使用,可以获得比较一致的程序设计风格。
4.3 CSGL: C# graphics library
基 于C#的一个OpenGL开发包,可以在C#中调用OpenGL1.4。
csgl.sourceforge.net/
4.4 OpenGL extension Detection Software(similar to DXCaps)
关于 OpenGL extension Support检查软件:
www.realtech-vr.com/glview/
5 GL2PS
我 们在阅读图形学相关的PDF文件的时候,我们通常会发现一些文件中的插图比较奇怪,当我们拖动页面的滚动条的时候,它们不断地刷新自己,这表明这些插图是 矢量的EPS图形。同时我们似乎觉得它们应该是OpenGL的输出结果。我们的直觉是对的,它们是OpenGL程序输出的EPS文件!如果有了这个开发 包,我想我们可以不再使用屏幕截图的方式生成的paper插图了。
OpenGL程序输出矢量的eps或者ps文件程序库的官方站点:
http://www.geuz.org/gl2ps/
6 GLtrace
这是OpenGL开发库中最有名的开发包之一。它是一个OpenGL的Hook DLL。它能够截获 OpenGL 1.3的所有函数调用。假设你知道一个应用程序是使用OpenGL1.3写的,但是你没有它的源代码,那么GLtrace能够记录所有的 OpenGL API调用,那么你就可以知道这个OpenGL程序是如何实现的。它相当一个Hack程序。
它的可以完成的工作如下:
(1) 截获一个OpenGL程序调用的所有OpenGL API序列;
(2)分析一个OpenGL程序的实现算法;
(3)强制一个OpenGL 程序使用Front Buffer绘制,对于跟踪一个.exe应用程序非常有效;
(4)对于一个OpenGL程序,修改GLtrace后,下载一 个应用程序的纹理数据,或者说叫窃取,特别是一些Game或者BenchMark;
(5)修改GLtrace后,窃取一个应用程序的图元数据,或 者网格;
(6)对一个程序作性能优化测试和分析,例如经典的Quake III,Profile或者performance tuning;
至 于如何使用这个工具,需要大家开动聪明的大脑袋。
这里我告诉大家它的官方网站,不过这个工具有多个明显的BUG,希望大家在使用的过程中能够把它 修订,我就不告诉大家是那几个具体的问题了。大家可以学习源代码的时候思考一下。
http://www.hawksoft.com/gltrace/
Advice: 推荐等级 *****
7 Industry Development Toolkits
下面主要介绍工业界的大型或者 Open Source,能够实现强大功能和场景组织,输入设备管理的工具包:
我简单列举一下,大家可以到相关网站下载。
SGI OpenGL inventor:
http://oss.sgi.com/projects/inventor/
SGI OpenGL performer:
http://www.sgi.com/software/performer/
Kitware VTK
http://public.kitware.com/VTK/
Open ML: 我感觉它完全是模仿DirectX SDK体系结构的一个东西。大家有兴趣可以研究一下。
http://www.khronos.org/openml/
OpenGVS: Quantum3D 的一个大型仿真系统软件包
http://www.opengvs.com/
OpenSceneGraph: open source high peformance 3D graphics toolkit
http://openscenegraph.sourceforge.net/
OpenSG:一个Open Source 的基于对象的Scene Graph
http://www.opensg.org/
VR Juggler: a good VR open source toolkit.
www.vrjuggler.org/
8 Game Development Library
8.1 Quake III/IV
8.2 Doom II/III
这 两个是最有名的,最近也公开了。
Yang Jian
jyang@cad.zju.edu.cn 2003/11/17
OpenGL render tips 的这个题目也比较大,而且具体讲那些内容,我还没有完全确定下来,我先讲一个比较小的题目。
关于这个题目的具体内容我也想了很久,我想介 绍一些大家经常用到的内容。
Glu
Glaux
Glut
OpenGL extension Toolkits
GL2PS
GLtrace
Industry develop Toolkits
1 glu
目 前的版本是glu1.3,我想这方面的内容和参考手册大家一定背得比我还熟。我就多嘴几句。Glu是调用OpenGL API实现的,我们可以使用 VC++6.0的Depends得到验证。我们可以认为它是OpenGL的一个辅助工具包。Glu的基本函数功能可以划分为三个方面:
(1)Transform 辅助函数
gluOth2D, gluLookAt, glProject,gluUnProject,glPickMatrix,gluPerspective
(2)Texture 辅助函数
自动Mipmap纹理生成或者纹理缩放为宽高为2^n
glBuild1DMipMaps
glBuild2DMipMaps
gluScaleImage
(3) 高级OpenGL几何图元生成
Sphere,Cylinder等
任意多边形(无论凸多 边形、或者凹多边形)三角形剖分;
Nurbs曲线和曲面;
Bezier曲线,曲面的定义在OpenGL中已经实 现,glMap*。
2 glaux
这是微软开发的,支持OpenGL初始化工作,窗口管理,消息处理等工作的一个开发包。根据我 的程序跟踪和使用,发现这个开发包包含了大量的错误,many bugs,而且能够引起严重的内存泄漏(memory leak)。
Advice: 尽可能避免使用这个开发包。
3 glut
它是一个跨跨平台windows/Linux/unix/mac的OpenGL辅助开发 包,它主要完成的任务有:
窗口创建与删除;
窗口消息的处理;
键盘鼠标消息回调函数;
OpenGL context的自动管理;
全屏幕程序支持;
一致的弹出式菜单支持;
http://www.opengl.org/developers/documentation/glut/index.html
Advice:它非常适合算法研究。
4 OpenGL extension Toolkits
4.1 SGI’s ogl SDK
关 于OpenGL extension SDK,可以说它一个官方的SDK
http://oss.sgi.com/projects/ogl-sample/sdk.html
42 glux
关于另外一个OpenGL extension SDK
http://w3imagis.imag.fr/Membres/Sylvain.Lefebvre/glux/
模仿glut写的,如果和glut配合使用,可以获得比较一致的程序设计风格。
4.3 CSGL: C# graphics library
基 于C#的一个OpenGL开发包,可以在C#中调用OpenGL1.4。
csgl.sourceforge.net/
4.4 OpenGL extension Detection Software(similar to DXCaps)
关于 OpenGL extension Support检查软件:
www.realtech-vr.com/glview/
5 GL2PS
我 们在阅读图形学相关的PDF文件的时候,我们通常会发现一些文件中的插图比较奇怪,当我们拖动页面的滚动条的时候,它们不断地刷新自己,这表明这些插图是 矢量的EPS图形。同时我们似乎觉得它们应该是OpenGL的输出结果。我们的直觉是对的,它们是OpenGL程序输出的EPS文件!如果有了这个开发 包,我想我们可以不再使用屏幕截图的方式生成的paper插图了。
OpenGL程序输出矢量的eps或者ps文件程序库的官方站点:
http://www.geuz.org/gl2ps/
6 GLtrace
这是OpenGL开发库中最有名的开发包之一。它是一个OpenGL的Hook DLL。它能够截获 OpenGL 1.3的所有函数调用。假设你知道一个应用程序是使用OpenGL1.3写的,但是你没有它的源代码,那么GLtrace能够记录所有的 OpenGL API调用,那么你就可以知道这个OpenGL程序是如何实现的。它相当一个Hack程序。
它的可以完成的工作如下:
(1) 截获一个OpenGL程序调用的所有OpenGL API序列;
(2)分析一个OpenGL程序的实现算法;
(3)强制一个OpenGL 程序使用Front Buffer绘制,对于跟踪一个.exe应用程序非常有效;
(4)对于一个OpenGL程序,修改GLtrace后,下载一 个应用程序的纹理数据,或者说叫窃取,特别是一些Game或者BenchMark;
(5)修改GLtrace后,窃取一个应用程序的图元数据,或 者网格;
(6)对一个程序作性能优化测试和分析,例如经典的Quake III,Profile或者performance tuning;
至 于如何使用这个工具,需要大家开动聪明的大脑袋。
这里我告诉大家它的官方网站,不过这个工具有多个明显的BUG,希望大家在使用的过程中能够把它 修订,我就不告诉大家是那几个具体的问题了。大家可以学习源代码的时候思考一下。
http://www.hawksoft.com/gltrace/
Advice: 推荐等级 *****
7 Industry Development Toolkits
下面主要介绍工业界的大型或者 Open Source,能够实现强大功能和场景组织,输入设备管理的工具包:
我简单列举一下,大家可以到相关网站下载。
SGI OpenGL inventor:
http://oss.sgi.com/projects/inventor/
SGI OpenGL performer:
http://www.sgi.com/software/performer/
Kitware VTK
http://public.kitware.com/VTK/
Open ML: 我感觉它完全是模仿DirectX SDK体系结构的一个东西。大家有兴趣可以研究一下。
http://www.khronos.org/openml/
OpenGVS: Quantum3D 的一个大型仿真系统软件包
http://www.opengvs.com/
OpenSceneGraph: open source high peformance 3D graphics toolkit
http://openscenegraph.sourceforge.net/
OpenSG:一个Open Source 的基于对象的Scene Graph
http://www.opensg.org/
VR Juggler: a good VR open source toolkit.
www.vrjuggler.org/
8 Game Development Library
8.1 Quake III/IV
8.2 Doom II/III
这 两个是最有名的,最近也公开了。