Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
OpenGL Performer
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{More citations needed|date=March 2025}} '''OpenGL Performer''', formerly known as '''IRIS Performer''' and commonly referred to simply as '''Performer''', is an application development environment.<ref name="j963">{{cite web | title=SCENEGRAPH PROGRAMMING WITH OPENGL | url=http://www.macs.hw.ac.uk/~ruth/year4VEs/Labs09/PerformerTutorials/OpenGLPerfomer.pdf | publisher=HW University | access-date=2025-03-27}}</ref><ref name="c683">{{cite book | last=Chen | first=Ran | title=2011 International Conference in Electrics, Communication and Automatic Control Proceedings | publisher=Springer Science & Business Media | publication-place=New York, NY | date=2011-11-25 | isbn=978-1-4419-8849-2 | page=1668}}</ref> It is a commercial library of utility code<ref name="j709">{{cite web | title=Chapter 2. OpenGL Performer Basics | website=TechPubs | date=1968-03-28 | url=https://techpubs.jurassic.nl/library/manuals/3000/007-3560-005/sgi_html/ch02.html | access-date=2025-03-27}}</ref> built on top of [[OpenGL]] for the purpose of enabling [[Real-time computing|hard real-time]] visual simulation applications. OpenGL Performer was developed by [[Silicon Graphics|SGI]]. OpenGL Performer is available for [[IRIX]], [[Linux]], and several versions of [[Microsoft Windows]]. Both [[ANSI C]] and [[C++]] bindings are available. ==History== Performer came about in 1991 when a group from SGI's [[Open Inventor]] 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]] 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 [[thread (computer science)|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]] 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 test]]ing for [[collision detection]] would also have dedicated processors allowing [[asynchronous I/O]] 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|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 shim]]s) 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]] and [[IBM]] (and later [[Digital Equipment Corporation|DEC]]) to create [[OpenGL plus plus|OpenGL++]], essentially a cleaned up version of Cosmo. This project died when SGI turned their attention to an almost identical project with [[Microsoft]] known as [[Fahrenheit graphics API|Fahrenheit]], 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 [[flybox]]es and [[MIL-STD-1553]] mux busses), motion models, collision models, and a format-independent database interface that supports common data formats such as [[Open Inventor]], [[OpenFlight]], [[Designer's Workbench]], [[Medit]], and [[Wavefront .obj file]]. ==References== {{reflist}} == External links == *[https://web.archive.org/web/20071224141002/http://www.sgi.com/products/software/performer/ OpenGL Performer] product page *[https://web.archive.org/web/20131010022754/http://techpubs.sgi.com/library/tpl/cgi-bin/browse.cgi?coll=0650&db=bks&cmd=toc&pth=%2FSGI_Developer%2FPerf_GetStarted%2F OpenGL Performer Getting Started Guide] *[https://web.archive.org/web/20131010023214/http://techpubs.sgi.com/library/tpl/cgi-bin/browse.cgi?coll=0650&db=bks&cmd=toc&pth=%2FSGI_Developer%2FPerf_PG%2F OpenGL Performer Programmers Guide] *[http://oss.sgi.com/projects/performer/ OpenGL Performer] sample code [[Category:3D scenegraph APIs]] [[Category:OpenGL]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:More citations needed
(
edit
)
Template:Reflist
(
edit
)