|
|
|
OpenGL PERFORMER |
|
|
|
This unofficial Opengl Performer FAQ Part 1 ( 1 thru 50) is provided by Gordon
Tomlinson , I hope you
find the information contained with these FAQ's useful and helpful OpenGL Performer™ is a powerful and comprehensive programming interface for developers creating real-time visual simulation and other performance-oriented 3D graphics applications. It simplifies development of complex applications used for visual simulation, manufacturing, simulation-based design, virtual reality, scientific visualization, interactive entertainment, broadcast video, architectural walk-through, and computer-aided design.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OpenGL Performer™ is a powerful and comprehensive programming interface for developers creating real-time visual simulation and other performance-oriented 3D graphics applications. It simplifies development of complex applications used for visual simulation, manufacturing, simulation-based design, virtual reality, scientific visualization, interactive entertainment, broadcast video, architectural walk-through, and computer-aided design. OpenGL Performer provides the advanced features and innovative techniques that enable you to achieve peak performance and make optimal use of system capabilities and sophisticated 3D gfraphics features. It gives you the capability to scale easily to multiple processors and multiple graphics pipelines, deploy to a wide range of systems and price points, and be ready-made for the graphics systems of today and the future. OpenGL Performer is built atop the industry standard OpenGL® graphics library and, includes both ANSI C and C++ bindings. It forms the foundation of a powerful suite of tools and features for creating applications on all Silicon Graphics® systems running IRIX® 6.5 or later, 32-bit Intel® based systems with Linux®, and 32-bit Intel based systems with Microsoft® Windows® 2000 or Windows® XP. OpenGL Performer is an integral part of the SGI® Onyx® Series visualization systems and visual workstation simulation solutions from SGI and, in particular, provides interfaces to the advanced features of InfiniteReality® and UltimateVision™ class graphics. OpenGL Performer is the flexible, intuitive, toolkit-based solution for developers who want to optimize performance on SGI systems.
| ||||||
OpenGL Performer is currenlty available of the following platforms
| ||||||
| ||||||
| ||||||
|
OpenGL Performer is a commercial product whichs means you need to purchase a copy of the software. But SGI does provide a free fully working evaluation version. This evaluation version places a large 'Powered By Opengl Performer' logo on the screen, this is removed when the software is fully licensed. The lastest versions of the software will be available from the OpenGL Performer downloads pages | ||||||
Free support can be found on several mailing list and user forums, not that although you can get help on these your not guaranteed to, if you have time and project critical questions I would highly recommend purchasing SGI's technical support
| ||||||
|
Purchasing and Ordering details can be found on the SGI Performer pages
| ||||||
|
The Performer Logo is displayed on all evaluations of OpenGL Performer. To remove this logo you need to have a valid run-time or developemnt license for Performer OpenGL which will be supplied by SGI when you Purchase a license for OpenGL Performer.
| ||||||
|
The new features and capabilities for Performer 3.1.1 include the:
| ||||||
|
Hard copies can also be ordered directly from SGI see ordering info
| ||||||
License keys are available for purchase from SGI. See the ordering info section of SGI's web site fore more information. In addition to run-time licensing, other forms of licensing
(OEM licenses, site licenses, etc) are available in certain cases for
major accounts. See your SGI sales representative for more information.
| ||||||
|
Yes you will need to have a separate license for each machine you need to run OpenGL Performer on. In general the SGI only provides Node-Locked licenses for OpenGL Performer although for lager corporate accounts they may provide site and network server license
| ||||||
|
| ||||||
| ||||||
|
FlexLM licensing is a technology from Globetrotter Software Inc. which SGI uses to license the OpenGL Performer software. License files Keys are available only from SGI Note that Globetrotter was acquired by Macrovision and FlexLM has been sucked into a product called FlexNet Publisher | ||||||
OpenGL Performer consists of two main libraries: And then has a further six associated support libraries:
| ||||||
|
| ||||||
|
Note that beginning with OpenGL Performer 2.5, libpf and libpr are actually combined into a single file in the installation. However the logical distinction between the two still remains | ||||||
|
| ||||||
|
| ||||||
|
| ||||||
|
| ||||||
|
The libpfv library provides a modular viewer providing a high-level infrastructure for rapid construction and extension of OpenGL Performer applications. It ships with an extensible collection of modules for display control, model manipulation, navigation, picking, and other customization. | ||||||
|
The libpfutil library is the OpenGL Performer utility library. It provides a collection of convenience routines implementing tasks such as smoke effects, MultiChannel Option support, graphical user interface tools, X and OpenGL GL event collection and management, and traversal functions | ||||||
|
| ||||||
Typically this indicates that you may have dropped in to software rendering mode on your graphics card. This can happen when you set-up up Opengl and request your pixel format for the Opengl Window. Normally it means you have asked for a format or a setting that the card cannot support or does not support. I say cannot support as it may be that the resources of that card are limited when you request the pixel format, such as your resolution is too big for a 32bit z buffer, another Opengl has already consumed most of the resources etc. Or your requesting a setting not supported by your graphics card, you can find the formats supported by your cards with the following On Irix you can use findvis on the command line to display the available bit plane configurations supported on the Irix system On Windows you can use a program from Nvidia to show the available bit plane configurations Then it might be a case you are trying to In this case you have to try and simply your application, reduce the data, reduce the applications work load, get fast machine, maybe use a multi-process machine, get better graphics, reduce your resolution etc
| ||||||
|
Pixel formats are made up from
different Bit plane's which allocate for features such as:
Note that support for the various pixel format configurations and combinations are not uniform across different Windows Graphics cards, Linux Systems and Irix systems. Vega will ask the system for a bit plane specification supplied through the Lynx Windows panel settings or through code, the request may not be granted. When the notification level (in Systems panel) is set to Info or higher, messages tell the user which bit plane configuration is actually being used There are generally two
methods of specifying bit plane configuration. On Irix you can use findvis on the command line to display the available bit plane configurations supported on the Irix system On Windows you can use a program from Nvidia to show the available bit plane configurations http://developer.nvidia.com/object/nvpixelformat.html Color
RGB
Alpha Depth Buffer Z
Bits Samples Stencil Accumulation
| ||||||
|
Basically the idea behind LOD processing is that objects which are barely visible don’t require a great amount of detail to be shown in order to be recognizable. Object are typically barely visible either because they are located a great distance from the eye point or because atmospheric conditions are obscuring visibility. Both atmospheric effects and the visual effect of perspective minimize the importance of objects at ever increasing ranges from the current observers eye point. The effect is that the perspective foreshortening of objects, which makes them appear to shrink in size as they recede into the distance. To improve performance and to save rendering time, objects that are visually less important in a frame can be rendered with less detail. The LOD approach optimizes the display of complex objects by constructing a number of progressively simpler versions of an object and selecting one of them for display as a function of range. An undesirable effect called popping occurs when the sudden transition from one LOD to the next LOD is visually noticeable. To remedy this SGI graphics
platforms offer a feature known as Fade Level of Detail that smoothes the
transition between LOD's by allowing two adjacent levels of detail to be
sub-sample blended. This is now supported by most Scenegraphs, as long as there
graphics support multi-sampling Here's a link to a Practical overview of an LOD
| ||||||
|
The Symmetric frustum defines the perspective projection applied to all scene elements processed for a channel. The near clipping distance is used to form a plane called the near clipping plane. The far distance defines the far clipping plane. For the symmetric frustum, both these planes are perpendicular to the line of sight of the viewer. The horizontal and vertical FOV's (fields of view) determine the radial extent of the view into the scene. FOV's are entered as degrees for the full width of the view desired. Entering a -1 for either but not both FOV causes the system to aspect match that FOV axis. For
example suppose the horizontal FOV is 45 degrees and the vertical is
set to -1. Once the window and channel are sized, the system selects
the appropriate FOV degree for the vertical FOV to maintain an aspect
ratio equal to that of the channel viewport.
Symmetric frustum
Also see the following Viewing Frustum Overview Image
| ||||||
|
This type of perspective frustum requires six values to define it. Clicking on the Asymmetric Frustum option displays the six entry fields. The near and far values are the same as the symmetrical frustum. The left, right, bottom, and top values define the side planes of the frustum. They are the angle offset in degrees for the plane they represent. See vpChannel and the Vega Prime Programmers Guide for further details.
Asymmetric frustum
Also see the following Viewing Frustum Overview Image
| ||||||
|
The sides of the frustum are parallel to the line of sight of the viewer. The Near and Far distances define the near and far clipping planes. The Left, Right, Bottom, and Top values define the frustum side planes. These values bear a direct relationship to the scale of the object being viewed. See vpChannel and the Vega Prime Programmers Guide for further details. Also see the following Viewing Frustum Overview Image
| ||||||
|
Isectors provide the ability to handle collision detection between objects within a Scenegraphs and are an essential part of most visual simulations For example, a typical need is to obtain the current Height Above Terrain (HAT) information in a flight simulator or a driving simulator is determined by firing a vertical line segment from the aircraft or vehicle towards the terrain/ground and calculating the distance between the aircraft or vehicle and the intersection point on the ground. Another example is the use of an Isector to pick or selecthings in the scene, this is typically done using an Line of Site (LOS) isector
| ||||||
|
A line segment in this case is defined by 2 XYZ vectors a Begin and an End position. A vpIsector class such as vpIsectorLOS will position and orientate the line segment. Basically speaking the Isector will traverse its target scene graph and test a nodes bounding spheres against the Line segments. If no intersection is found then the node and all the nodes children are a rejected, this allows for fast collision detection. If an intersection hit is encountered with the bounding sphere the test can them become more fine grained test of each child node for an intersection until the leaf geometry node is reached, then data on the collisions detected can be stored such as pointers to node, position of intersection, the normal perpendicular to the intersection etc. (This is of course an oversimplification of a more complicated process)
| ||||||
|
|
||||||
|
Animations are typically used for films, high resolution renderings, images for print, and pre-programmed demonstrations. Real-time applications are used in application where responding to user input is part of the simulation, for example, during flight training and interactive architectural demonstrations. Both real-time and animation applications simulate real and imaginary worlds with highly detailed models, produce smooth continuous movement, and render at a certain number of frames per second . Some of the main differences are:
| ||||||
|
This would depend on what format your source models are in. Typically you should be able to use a format conversion program such as Polytrans or Deep Exploration. These offer a good selection of import formats and the ability to output OpenFlight models. | ||||||
|
Here's one way that you could do this is along the following lines:
| ||||||
|
Here's one way that you could do this is along the following lines:
| ||||||
|
"pfb" and "pfa" are database file formats provided with OpenGL Performer. Performer provides both loaders and writers for this format "pfb", is binary database format, this is basically a binary dump of the scene-graph of a model or node, it is extremely fast to load this.. The general practice is to convert you 3d models to pfb for your finished application "pfa" is an ASCII text format which is human readable, this is very slow loading and is generally used for debugging purposes | ||||||
|
"pfb" and "pfa" can be created using the pfconv tool or through code using pfdStoreFile, any file that OpenGL Performer can load can be converted to the "pfb" or "pfa" formats. The source for pfConv is provided with the OpenGL Performer on Windows can be found C:\Program Files\Silicon Graphics\OpenGL Performer\Src\conv.
| ||||||
|
| ||||||
|
|
||||||
|
| ||||||
|
Currently there is no easy method to convert "pfb" files to MultiGen OpenFlight format. Generally OpenGL Performer files loading and writing is done through a plugin loader/save method and uses pfdLoadFile and pfdStoreFile respectively. Currently only the loader is defined for the OpenFlight format. As the OpenFlight format is a publicly published format then one could write there own pfdStoreFile writer. The MultiGen OpenFlight format specification can be found here. | ||||||
|
|
||||||
|
Rendering images at a consistent chosen frame rate. Fixed frame rates are a central theme of visual simulation and are supported in OpenGL Performer using the PFPHASE_LOCK and PFPHASE_FLOAT modes. PFPHASE_FREE_RUN and PFPHASE_LIMIT maintain full synchronization among App Cull and Draw. This means that every App frame has the corresponding Cull and Draw frames. Theses phases are useful for simple graphic programs. PFPHASE_FLOAT and PFPHASE_LOCK let Cull miss App frames, and let Draw miss Cull frames. This means that if Cull is too slow, App may produce more than a single frame before Cull is ready. Cull always takes the latest ready frame and skips all previous ones. Similarly, Cull may produce more than a single frame before Draw is ready. Draw always picks the latest ready frame from Cull and skips all previous ones. These phases reduce the latency between the latest App frame to the rendered Draw frame. | ||||||
|
| ||||||
|
| ||||||
|
| ||||||