GRAPHICAL KERNEL SYSTEM (GKS)
DATA EXCHANGE STANDARDS
STEP (Standard for the Exchange of Product model Data)
• Standard for Exchange of Product Model Data
• Uses a formal model f or data exchange
• Information is modele d using the EXPRESS language
• EXPRESS has elements of Pascal, C, and other languages
• It contains constructs for defining data types and structures, but not fo r processing data
• EXPRESS describes geometry and other information in a standard, unambiguous way
Classes of STEP Parts
•Introductory •Description metho ds
•Implementation m ethods
•Conformance testiing methodology and framework
•Application proto cols
•Abstract test suites
•Application interp reted constructs
Status of STEP
•STEP has been un der development for many years, and will continue for many more
•Over a dozen STE P parts have been approved as international sta ndards
•Many others are under development
CONTINUOUS ACQUISITION AND LIFE-CYCLE SUPPORT (CALS)
•Developed by US Department of Defense
•Prescribes formats for storage and exchange of technical data •Technical publications an important focus
Important CALS Standards
• Standard Generalized Markup Language (SGML) -developed in 1960s IBM
i. document description language
ii. separates content from structure (formatting)
iii. uses “tags” to define headings, sections, chapters, etc.
iv. HTML is based on SGML
• Computer Graphics Metafile (CGM)
i. Developed in 1986
ii. vector file format for illustrations and drawings
iii. All graphical elements can be specified in a textual source file that can be compiled into a binary file or one of two text representations
OpenGL (Open Graphics Library)
OpenGL is a cross-la nguage, multi-platform application programmi ng interface (API) forrendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achi eve hardware-accelerated rendering.
The OpenGL specific ation describes an abstract API for drawing 2D and 3D graphics. Although it is possible for the API to be implemented entirely in software, it is designed to be implemented mostly or entirely in hardware.
In addition to being la nguage-independent, OpenGL is also platform-independent. The specification says nothing on the subject of obtaining, and managing, an OpenGL context, leaving this as a detail of the underlying windowing system. For the same reason, OpenGL is purely concerned with rendering, providing no APIs related to input, audio, or windowing.
OpenGL Command Syntax
As you might have observed from the simple program in the previous section, OpenGL commands use the prefix gl and initial capital letters for each word making up the command name (recall glClearColor(), for example). Similarly, OpenGL defined constants begin with GL_, use all capital letters, and use underscores to separate words (like GL_COLOR_BUFFER_BIT).
You might also have noticed some seemingly extraneous letters appended to some command names (for example, the 3f in glColor3f() and glVertex3f()). It's true that the Color part of the command name glColor3f() is enough to define the command as one that sets the current color. However, more than one such command has been defined so that you can use different types of arguments. In particular, the 3 part of the suffix indicates that three arguments are given; another version of the Color command takes four arguments. The f part of the suffix indicates that the arguments are floating-point numbers. Having different formats allows OpenGL to accept the user's data in his or her own data format.
Some OpenGL commands accept as many as 8 different data types for their arguments. The letters used as suffixes to specify these data types for ISO C implementations of OpenGL are shown in Table 1-1, along with the corresponding OpenGL type definitions. The particular implementation of OpenGL that you're using might not follow this scheme exactly; an implementation in C++ or Ada, for example, wouldn't need to.
Table: Command Suffixes and Argument Data Types
OpenGL provides a powerful but primitive set of rendering commands, and all higher-level drawing must be done in terms of these commands. Also, OpenGL programs have to use the underlying mechanisms of the windowing system. A number of libraries exist to allow you to simplify your programming tasks, including the following:
• The OpenGL Utility Library (GLU) contains several routines that use lower-level OpenGL commands to perform such tasks as setting up matrices for specific viewing orientations and projections, performing polygon tessellation, and rendering surfaces. This library is provided as part of every OpenGL implementation. Portions of the GLU are described in the OpenGL Reference Manual. The more useful GLU routines are described in this guide, where they're relevant to the topic being discussed, such as in all of Chapter 11 and in the section "The GLU NURBS Interface". GLU routines use the prefix glu.
• For every window system, there is a library that extends the functionality of that window system to support OpenGL rendering. For machines that use the X Window System, the OpenGL Extension to the X Window System (GLX) is provided as an adjunct to OpenGL. GLX routines use the prefix glX. For Microsoft Windows, the WGL routines provide the Windows to OpenGL interface. All WGL routines use the prefix wgl. For IBM OS/2, the PGL is the Presentation Manager to OpenGL interface, and its routines use the prefix pgl.
• The OpenGL Utility Toolkit (GLUT) is a window system-independent toolkit, written by Mark Kilgard, to hide the complexities of differing window system APIs. GLUT is the subject of the next section, and it's described in more detail in Mark Kilgard's book OpenGL Programming for the X Window System (ISBN 0-201-48359-9). GLUT routines use the prefix glut. "How to Obtain the Sample Code" in the Preface describes how to obtain the source code for GLUT, using ftp.
• Open Inventor is an object-oriented toolkit based on OpenGL which provides objects and methods for creating interactive three-dimensional graphics applications. Open Inventor, which is written in C++, provides prebuilt objects and a built-in event model for user interaction, high-level application components for creating and editing three-dimensional scenes, and the ability to print objects and exchange data in other graphics formats. Open Inventor is separate from OpenGL.