HOME

TheInfoList



OR:

{{unreferenced, date=September 2009 OpenGL Performer, formerly known as IRIS Performer and commonly referred to simply as Performer, is a commercial library of utility code built on top of
OpenGL OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardwa ...
for the purpose of enabling
hard real-time Real-time computing (RTC) is the computer science term for hardware and software systems subject to a "real-time constraint", for example from event to system response. Real-time programs must guarantee response within specified time constrai ...
visual simulation applications. OpenGL Performer was developed by SGI which continues to maintain and enhance it. OpenGL Performer is available for
IRIX IRIX ( ) is a discontinued operating system developed by Silicon Graphics (SGI) to run on the company's proprietary MIPS workstations and servers. It is based on UNIX System V with BSD extensions. In IRIX, SGI originated the XFS file system a ...
,
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, whi ...
, and several versions of
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
. Both
ANSI C ANSI C, ISO C, and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and ISO/IEC JTC 1/SC 22/WG 14 of the International Organization for Standardization (ISO) and th ...
and
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
bindings are available.


History

Performer came about in 1991 when a group from SGI's
Open Inventor Open Inventor, originally IRIS Inventor, is a C++ object-oriented retained mode 3D graphics toolkit designed by SGI to provide a higher layer of programming for OpenGL. Its main goals are better programmer convenience and efficiency. Open Inven ...
project, then known as IRIS Inventor, decided to focus on performance rather than ease of programmability. Whereas Inventor delivered easy-to-use objects and various UI elements to interact with them, Performer focused on a
scene graph Scene (from Greek σκηνή ''skēnḗ'') may refer to: Arts, entertainment, and media Music * Scene (subculture), a youth subculture from the early 2000s characterized by a distinct music and style. Groups and performers * The Scene who rec ...
system that could be re-arranged on the fly for performance reasons, allowing the various passes of a rendering task to be performed in parallel in multiple threads. Performer allowed the scene to describe levels of detail with hysteresis bands and fade capabilities. Frame rate and statistics were monitored and a 'stress' factor was calculated. This could be used to further weight the level of detail in the scene eliminating detail to maintain a target frame rate. Other key features of Performer were the use of
symmetric multi-processing Symmetric multiprocessing or shared-memory multiprocessing (SMP) involves a multiprocessor computer hardware and software architecture where two or more identical processors are connected to a single, shared main memory, have full access to all ...
capabilities, support multiple graphics pipes and the ability to utilize the scalable resources of high end systems. In this regard Performer was actually simple to use given the underlying complexity. Application culling and rendering could be running in different threads locked to different physical processors. In a multi-pipe (multiple graphics subsystems) configuration rendering to each graphics pipe would have a dedicated thread and similarly culling would also have a dedicated processor. Advanced features like database paging, texture paging and point light source management (for flight simulation) and intersection testing for
collision detection Collision detection is the computational problem of detecting the intersection of two or more objects. Collision detection is a classic issue of computational geometry and has applications in various computing fields, primarily in computer grap ...
would also have dedicated processors allowing
asynchronous I/O In computer science, asynchronous I/O (also non-sequential I/O) is a form of input/output processing that permits other processing to continue before the transmission has finished. A name used for asynchronous I/O in the Windows API is overlappe ...
and processing to occur without negatively impacting graphics performance. Most of this complexity was hidden beneath a simpler scene graph API with relatively high level configuration calls which could be made to set up the threads and inter-process communication. Performer did not have a native file format, merely plugin loaders from 3rd parties such as MultiGen's OpenFlight format loader. Similarly there was no default runtime, there was sample code and the often used and often modified 'perfly' sample application. This probably contributed to its reputation for being difficult to use. By the mid-1990s it started to become clear that there was no reason that Inventor and Performer could not be combined. This led to the Cosmo 3D project that SGI was intending to build both Inventor and Performer (now essentially API shims) out of, as well as promote as a new and higher-level standardized API for future work on the SGI platform. However, after the first beta release of Cosmo 3D, SGi joined with
Intel Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 seri ...
and IBM (and later DEC) to create OpenGL++, essentially a cleaned up version of Cosmo. This project died when SGI turned their attention to an almost identical project with
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
known as
Fahrenheit The Fahrenheit scale () is a temperature scale based on one proposed in 1724 by the physicist Daniel Gabriel Fahrenheit (1686–1736). It uses the degree Fahrenheit (symbol: °F) as the unit. Several accounts of how he originally defined hi ...
, which was also killed. Today Inventor and Performer remain separate products, and none of the combined versions ever saw the light of day.


Features

Performer consists primarily of two libraries: the lower-level ''libpr'' and the higher-level ''libpf.'' The ''libpr'' library provides an object-oriented interface to high-speed rendering functions based on the concept of a ''pfGeoSet'' and a ''pfGeoState''. A ''pfGeoSet'' is a collection of graphics primitives, such as polygons or lines. A ''pfGeoState'' encapsulates properties pertaining to a given pfGeoSet such as lighting, transparency, and texturing. The ''libpf'' library includes functions for the generation and manipulation of hierarchical scene graphs, scene processing (simulation, intersection, culling, and drawing tasks), level-of-detail management, asynchronous database paging, dynamic coordinate systems, environment models, light points, and so on. This library also provides transparent support for multiple viewports spread across multiple graphics pipelines. Other Performer libraries--''libpfutil, libpfdb, libpfui,'' etc.--provide functions for generating optimized geometry, database conversion, device input (such as for interfacing with external flyboxes and
MIL-STD-1553 MIL-STD-1553 is a military standard published by the United States Department of Defense that defines the mechanical, electrical, and functional characteristics of a serial data bus. It was originally designed as an avionic data bus for use with ...
mux busses), motion models, collision models, and a format-independent database interface that supports common data formats such as
Open Inventor Open Inventor, originally IRIS Inventor, is a C++ object-oriented retained mode 3D graphics toolkit designed by SGI to provide a higher layer of programming for OpenGL. Its main goals are better programmer convenience and efficiency. Open Inven ...
, OpenFlight, Designer's Workbench, Medit, and
Wavefront In physics, the wavefront of a time-varying '' wave field'' is the set ( locus) of all points having the same '' phase''. The term is generally meaningful only for fields that, at each point, vary sinusoidally in time with a single temporal fr ...
.


External links


OpenGL Performer
product page
OpenGL Performer Getting Started GuideOpenGL Performer Programmers GuideOpenGL Performer
sample code 3D scenegraph APIs OpenGL