Interpretive OpenGL for computer graphics
OpenGL is the industry-leading, cross-platform graphics application programming interface (API), and the only major API with support for virtually all operating systems. Many languages, such as Fortran, Java, Tcl/Tk, and Python, have OpenGL bindings to take advantage ofOpenGL visualization power. In this article, we present Ch OpenGL Toolkit, a truly platform-independent Ch binding to OpenGL for computer graphics. Ch is an embeddable C/ C interpreter for cross-platform scripting, shell programming, numerical computing, and embedded scripting. Ch extends C with salient numerical and plotting features. Like some mathematical software packages, such as MATLAB, Ch has built-in support for two and three-dimensional graphical plotting, computational arrays for vector and matrix computation, and linear system analysis with advanced numerical analysis functions based on LAPACK. Ch OpenGL Toolkit allows OpenGL application developers to write applications in a cross-platform environment, and all of the OpenGL application source code can readily run on different platforms without compilation and linking processes. In addition, the syntax ofCh OpenGL Toolkit is identical to C interface to OpenGL. Ch OpenGL Toolkit saves OpenGL programmersrsquo; energies for solving problems without struggling with mastering new language syntax. Ch OpenGL Toolkit is embeddable. Embedded Ch OpenGL graphics engine enables graphical application developers or users to dynamically generate and manipulate graphics at run-time. The truly platform independent, scriptable, and embeddable features of Ch OpenGL Toolkit make it a good candidate for rapid prototyping, mobile graphics applications, Webbased applications, and classroom interactive presentation. The design issues ofCh OpenGL Toolkit and its potential applications are presented in the article. A methodology that can be used to implement a Web-based visualization system based on Ch OpenGL and Ch CGI is also introduced. The method described in the article can be easily followed to create a Web-based visualization system at low cost and with minimal effort. The software packages Ch and Ch CGI Toolkit are freely available and can be downloaded from the Internet. r 2005 Elsevier Ltd. All rights reserved.
Introduction
The field ofcomputer graphics continues rapidly growing with an ever-increasing number ofapplicationsin diverse areas, such as entertainment, business, art, education, medicine, engineering, and industry. A number ofsoftware packages have emerged to help generate and manipulate two-dimensional (2D)/threedimensional (3D) graphics. OpenGL [1] is a graphical application programming interface (API) for the C/ C programming language. The primary motivation for developing OpenGL API is to create an operatingsystem, window system, and hardware platform independent API for the development of 2D/3D graphics. Since OpenGL API was introduced in 1992, many applications, such as CAD, CAM, and game development, have benefited from its cross-platform accessibility. OpenGL has become a premier environment for developing portable 2D/3D graphics applications. It is also widely used for teaching and learning computer graphics. The features of device independence and portability make OpenGL a strategic interface for courses on computer graphics. Computer platforms vary from instructor to student and from school to student home. By using OpenGL, programs developed on a machine can be debugged and graded on other machines with different platforms, and the resulting graphics are the same.Since OpenGL is one ofthe most popular industry standard graphical software packages, many languages, such as Fortran, Java, Tcl/Tk, and Python, have OpenGL bindings to take advantage ofOpenGL visualization power. The information about these language bindings to OpenGL is introduced in Section 2. We have developed Ch OpenGL Toolkit [2]. Ch is an embeddable C/C interpreter. Ch OpenGL Toolkit further enhances the portability of OpenGL API. Usually, OpenGL application programs have to be compiled and linked before running these programs on different platforms. Ch OpenGL Toolkit makes OpenGL applications truly portable across different platforms. With Ch OpenGL, OpenGL application source code can readily run on different platforms without compilation and linking processes. The design issues ofCh OpenGL Toolkit and its potential applications are presented in the article. A comparison ofCh OpenGL Toolkit to similar attempts is also given and the novel features of Ch OpenGL are highlighted. The remainder ofthe article is organized as follows. Section 2 reviews major language bindings to OpenGL. Section 3 introduces Ch and Ch OpenGL. Several design issues related to Ch OpenGL Toolkit are discussed. Section 4 presents some potential applications of Ch OpenGL. Section 5 summarizes different approaches ofWeb-based visualization systems and demonstrates how to implement a Web-based visualization system based on Ch OpenGL and Ch CGI. Section 6 discusses planned future work for portable and Webbased animation. Section 7 summarizes the presented work.
OpenGL is supported by major operating systems and window systems, and it is callable from many programming languages. This section introduces different language bindings to OpenGL.The Fortran 90 Interface to OpenGL, f90gl [3], is a public domain implementation ofthe official Fortran 90 bindings to OpenGL. The interface is responsible for ensuring the interoperability between Fortran and C, such as matching Fortran data types to C data types, choosing subroutines and functions in Fortran for different C functions, and dealing with array arguments. Most vendor implementations ofthe Fortran interface to OpenGL are for a specific system with specific Fortran and C compliers. Although the Fortran 90 Interface is much more robust and portable than the Fortran 77 interface because the Fortran/C interfa
全文共30365字,剩余内容已隐藏,支付完成后下载完整资料
用于计算机图形学的OpenGL解释
摘要
OpenGL是业界领先的跨平台图形应用编程接口(API),也是唯一支持几乎所有操作系统的主要API。Fortran,Java,Tcl / Tk和Python等许多语言都使用OpenGL绑定来利用OpenGL可视化功能。在本文中,我们将介绍Ch OpenGL工具包,这是一种真正与平台无关的用于计算机图形学的OpenGL的Ch绑定。Ch是用于跨平台脚本编写,shell编程,数值计算和嵌入式脚本的嵌入式C / C 解释器。 Ch通过突出的数字和绘图功能扩展了C。就像MATLAB等一些数学软件包一样,Ch内置了对二维和三维图形绘图的支持,向量和矩阵计算的计算阵列,以及基于LAPACK的高级数值分析函数的线性系统分析。 Ch OpenGL Toolkit允许OpenGL应用程序开发人员在跨平台环境下编写应用程序,并且所有OpenGL应用程序源代码都可以轻松运行在不同的平台上,无需编译和链接过程。另外,Ch OpenGL Toolkit的语法与OpenGL的C接口相同。 通过OpenGL工具包,OpenGL程序员可以节省解决问题的能量,而无需掌握新的语言语法。 Ch OpenGL工具包是可嵌入的。 嵌入式Ch OpenGL图形引擎使图形应用程序开发人员或用户能够在运行时动态生成和操作图形。 Ch OpenGL Toolkit的真正平台独立,脚本化和可嵌入功能使其成为快速原型设计,移动图形应用程序,基于Web的应用程序和课堂交互式演示的理想选择。本文介绍了OpenGL工具包的设计问题及其潜在应用。 还介绍了一种可用于实现基于Ch OpenGL和Ch CGI的基于Web的可视化系统的方法。 文章中描述的方法可以轻松地以低成本和最小的努力创建基于Web的可视化系统。 软件包Ch和Ch CGI Toolkit可以免费获得,并且可以从互联网上下载。 2005年爱思唯尔有限公司保留所有权利。
简介
随着娱乐,商业,艺术,教育,医药,工程和工业等不同领域的应用数量不断增加,计算机图形领域的发展速度不断加快。 已经出现了许多软件包来帮助生成和操纵二维(2D)/三维(3D)图形。 OpenGL [1]是C / C 编程语言的图形应用程序编程接口(API)。 开发OpenGL API的主要动机是创建用于开发2D / 3D图形的操作系统,窗口系统和硬件平台无关的API。自从1992年推出OpenGL API以来,许多应用程序(如CAD,CAM和游戏开发)已从其跨平台可访问性中受益。 OpenGL已成为开发便携式2D / 3D图形应用程序的首要环境。 它也广泛用于教学和学习计算机图形学。 设备独立性和可移植性的特点使OpenGL成为计算机图形学课程的战略接口。 计算机平台从讲师到学生,从学校到学生之家都有所不同。 通过使用OpenGL,可以对机器上开发的程序进行调试,并在具有不同平台的其他机器上进行分级,并且生成的图形相同。由于OpenGL是最流行的行业标准图形软件包之一,因此许多语言(如Fortran,Java ,Tcl / Tk和Python,都有OpenGL绑定来利用OpenGL的可视化功能。关于这些与OpenGL语言绑定的信息在第2节中介绍。我们开发了Ch OpenGL工具包[2]。 Ch是一个可嵌入的C / C 解释器。 Ch OpenGL工具包进一步增强了OpenGL API的可移植性。 通常,OpenGL应用程序必须在不同平台上运行这些程序之前进行编译和链接。 通过OpenGL工具包,OpenGL应用程序可以跨不同平台真正移植。使用Ch OpenGL,OpenGL应用程序源代码可以轻松运行在不同平台上,无需编译和链接过程。 本文介绍了OpenGL工具包的设计问题及其潜在应用。 还给出了OpenGL工具包与类似尝试的比较,并突出了Ch OpenGL的新特性。 文章的其余部分安排如下。 第2部分回顾了主要的与OpenGL的语言绑定。 第3节介绍Ch和Ch OpenGL。 讨论了与Ch OpenGL工具包相关的几个设计问题。 第4部分介绍了Ch OpenGL的一些潜在应用。 第5节总结了基于Web的可视化系统的不同方法,并演示了如何实现基于Ch OpenGL和Ch CGI的基于Web的可视化系统。 第6节讨论了便携式和基于Web的动画的未来计划。 第7部分总结了所介绍的工作。
2相关工作
主要的操作系统和窗口系统支持OpenGL,它可以从许多编程语言中调用。本节介绍与OpenGL不同的语言绑定。Fortran 90与OpenGL的接口f90gl [3]是Fortran 90与OpenGL绑定的公共领域实现。该接口负责确保Fortran和C之间的互操作性,例如将Fortran数据类型与C数据类型匹配,在Fortran中为不同的C函数选择子例程和函数以及处理数组参数。 Fortran与OpenGL接口的大多数供应商实现都是针对具有特定Fortran和C编译器的特定系统。尽管Fortran 90接口比Fortran 77接口更健壮,更便携,因为Fortran / C接口完全包含在Fortran 90接口中,并且对用户隐藏,但仍存在一些潜在问题。例如,用户有责任选择合适的编译器来提供足够的跨语言调用约定,确保内部分配给C指针的持久性函数参数,处理C函数中的unsigned int数据类型,并特别注意Fortran和C中的数组顺序差异[4]。 JOGL项目是用于OpenGL API的Java绑定的参考实现,旨在为用Java编写的应用程序提供硬件支持的3D图形[5]。 Jogl可以访问最新的OpenGL例程(带有供应商扩展的OpenGL 1.4)以及与硬件加速离屏渲染(#39;#39;pbuffers#39;#39;)平台无关的访问。 JOGL专为最新版本的Java平台J2SE 1.4及更高版本而设计。它仅支持真彩色(每像素15位或更高)渲染,并且不支持颜色索引模式。由于JODE是一个正在进行的项目,所以访问OpenGL功能的范围是有限的,并且在不同的平台上仍然存在一些问题,这些问题可以在网页上的JOGL用户指南中找到[5]。脚本语言越来越多地用于快速原型,动态操作组件和基于Web的应用程序。脚本语言在这些应用领域越来越受欢迎的原因是,脚本语言通过消除编译时间并在运行时允许用户动态地编程应用程序,从而在开发过程中提供了快速的周转[6]。大多数脚本语言在语言中嵌入不同的二进制库,允许用户访问脚本中的库功能。例如,许多脚本语言与OpenGL绑定,提供对OpenGL库的解释访问,以便开发人员可以在脚本中执行交互式3D图形。作为例子,下面描述了Tcl / Tk和Python与OpenGL的绑定。有几个Tcl / Tk绑定到OpenGL。最流行的两种实现是TKOGL和Togl。 TKOGL [7]是一个Tk OpenGL小部件,可以使用OpenGL API创建和显示3D图形。这种实现的优势在于3D图形控件的行为类似于Tk 2D控件,使经验丰富的用户和新手用户都能够以简洁的方式生成和显示3D模型。该系统的缺点是它将OpenGL命令绑定到窗口小部件并破坏了OpenGL的主要优点之一,即窗口系统独立性。 Togl [8]也是OpenGL渲染的Tk部件。虽然Togl提供了打开窗口来显示OpenGL图形的方法,但它不包含用于任何OpenGL渲染函数的Tcl绑定。典型的Togl程序具有用于管理用户界面的Tcl代码和用于计算和OpenGL渲染的C程序。要有效地使用Togl,应该熟悉Tcl,Tk,OpenGL和C编程。 PyOpenGL [9]是Python与OpenGL及相关API的绑定。这是一个有影响力的3D图形脚本包,并已收到一些实际应用。然而,像其他脚本语言绑定到OpenGL一样,PyOpenGL中的语法功能已从标准OpenGL API修改过。此外,由于C和Python之间的差异,PyOpenGL 2中出现的一些函数的调用方法和功能与C相对应的不同。例如,每个具有数组指针或数组元素参数的PyOpenGL函数调用与C函数调用的格式不同,因为它们访问数组的方式与C和Python不同。
Ch 和 Ch OpenGL
Ch最初由Cheng [10,11]开发,是一个可嵌入的C / C 解释器,用于跨平台脚本编写,shell编程,数值计算和嵌入式脚本编写。它支持1990年批准的C语言标准的所有特性。C99采用了许多新功能,例如复杂数字,变长数组,IEEE浮点算法和类型通用数学函数,这些新功能在C99中得到采用。此外,Ch支持C 中的基于对象编程的类。与其他数学软件包(如MATLAB)一样,Ch内置了对二维和三维图形绘图的支持,向量和矩阵计算的计算阵列以及基于LAPACK的高级数值分析函数的线性系统分析。借助计算数组的强大功能,我们可以直接在表达式中指定矢量和矩阵运算,这与交互式执行和程序中的标量相同。图1显示了在Ch shell中交互式执行程序语句。类型声明符数组和int将变量A和B声明为int类型的计算数组。头文件array.h需要包含在程序中以使用计算数组。 Ch OpenGL是一个Ch到OpenGL的绑定。它提供对OpenGL,GLU,GLUT和GLAUX全部功能的访问。 Ch OpenGL有许多新颖的功能。首先,Ch是一个跨平台的C / C 解释器。作为ch分发的一部分,Ch OpenGL允许OpenGL应用程序开发人员在跨平台环境中编写应用程序。所有的OpenGL应用程序源代码都可以很容易地在不同的平台上运行,而无需编译和链接过程,如图2所示。其次,OpenGL的语法与OpenGL的C语言接口完全相同。没有必要学习新的语法。第三,Ch OpenGL是可嵌入的。将Ch嵌入图形应用程序允许开发人员或用户在运行时动态生成和处理图形。最后,Ch中的计算阵列使得3D图形中的矢量和矩阵运算更加简洁。我们相信图形应用程序的计算效率可以通过利用数字能力显着提高。与OpenGL的Ch接口比任何其他的OpenGL语言接口简单得多,因为Ch和OpenGL共享相同的语法和数据类型。 Ch脚本可以通过Ch SDK访问静态或动态C / C 二进制库中的函数。图3显示了Ch OpenGL脚本如何与OpenGL C库进行交互。当运行Ch OpenGL脚本(C / C OpenGL源代码)时,Ch会在Ch函数库中查找与脚本中的函数对应的函数文件。这些函数文件通过Ch SDK将Ch空间中的函数参数传递到C空间中的Ch动态加载库(CDLL)中的相应函数。 CDLL中的函数调用OpenGL C函数并将结果返回到Ch函数文件。 Ch OpenGL工具包包含一个Ch函数库和一个用于OpenGL的Ch动态加载库。对于简单的OpenGL C函数,OpenGL工具包的实现很简单。对于某些具有指向回调函数指针参数的函数,需要特别处理,因为C空间中的这些函数在Ch空间中具有回调函数。在Ch OpenGL Toolkit中解决这个问题的策略是在C空间中创建一个Ch回调对象。作为一个例子,图4 [12]所示系统的程序使用函数glutDisplayFunc来为GLUT中的每个窗口设置显示回调。当GLUT确定需要重新显示屏幕空间窗口时,C空间中的屏幕空间窗口的显示回调被调用,并且该C回调又通过动态加载的库调用Ch回调,如图5所示。
4 Ch OpenGL的潜在应用
4.1 解释性地运行OpenGL程序
Ch OpenGL工具包支持核心OpenGL,GLUT和GLAUX。使用OpenGL函数的C / C 程序可以很容易地视为Ch脚本。该程序可以直接运行在不同的命令外壳,集成开发环境(IDE)或Windows中的Windows资源管理器,无需编译和链接。图6说明了如何在Ch shell中解释性地执行C程序transformation.c(一种流行的Nate Robins的OpenGL教程演示程序[12])。图4显示了在Ch命令shell中执行程序transformation.c的输出。所有Nate Robins的OpenGL演示的源代码可在[12,13]中找到。他们很容易在没有编译的情况下运行Ch [13]。解释性OpenGL非常适合图形快速原型设计,交互式课堂演示和学生学习。不同参数对输出的影响可以立即通过修改它们的值并立即运行源代码而不需要重新编译和链接来实现。
4.2 Mobile图形
在基于互联网的分布式协作图形系统中,需要将图形发送给系统中的不同主机。我们可能不会发送图形数据,而是向目标系统发送代码以在本地生成和操作图形。这种方法在重型图形传输系统中显着降低了网络流量。图形移动程序可以通过应用程序在一台机器上在线动态生成,并在具有不同平台的其他机器上运行。为了支持异构网络中的移动图形代码的执行,应将可编写脚本的图形引擎(例如Ch [11])嵌入移动图形代码可能迁移到的每个主机中。 Ch OpenGL是这类应用的理想选择。
4.3 Web和网络应用程序
许多现有的可视化应用程序都是使用OpenGL在C / C 中编写的。然而,与Web服务器接口的困难阻碍了他们在基于Web的可视化系统中的应用。作为C的超集,由于其解释性质,Ch适用于基于Web的应用程序。许多基于Web的应用程序,如用于控制系统设计和分析的基于Web的系统[14],已在Ch。通过Ch OpenGL和Ch CGI [15],可以在基于Web的可视化系统中使用C / C OpenGL程序。
5. OpenGL Web应用程序
本节介绍基于Web的可视化系统的不同方法,并介绍如何实现基于Ch,Ch OpenGL和Ch CGI的基于Web的可视化系统。
5.1基于Web的可视化系统的不同方法
基于Web的可视化系统通常基于客户机/服务器体系结构,如图7所示。对于基于服务器的方法,在服务器端执行可视化,并将生成的图形文件返回给客户机以供浏览器查看。最终用户通过浏览器中的基于表单的界面设置应用程序参数并激活可视化过程。该表单由CGI,ASP或JSP或其他脚本处理,它们调用服务器机器上的应用程序并将生成的图形数据或文件发送到客户
全文共11410字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[12160],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。