PLIB

Last updated
PLIB
Plib logo.png
Official logo
Developer(s) Steve Baker
Stable release
1.8.5 / November 2006;12 years ago (2006-11)
Repository OOjs UI icon edit-ltr-progressive.svg
Written in C++
Type software libraries
License LGPL
Website plib.sf.net

PLIB is a suite of free and open-source libraries to ease the development of computer games. It was originally written by Steve Baker in 1997 and licensed under the LGPL.

Library (computing) collection of non-volatile resources used by computer programs, often to develop software; software component that can be reused by other software for a specific purpose

In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. In IBM's OS/360 and its successors they are referred to as partitioned data sets.

Contents

PLIB includes sound effects, music, a complete 3D engine, font rendering, a simple windowing library, a game scripting language, a graphical user interface (GUI), networking, 3D math library and a collection of utility functions. All are 100% portable across nearly all modern computing platforms. Each library component is fairly independent of the others to encourage replacement with other libraries like Simple DirectMedia Layer (SDL) or FLTK.

Graphical user interface user interface allowing interaction through graphical icons and visual indicators

The graphical user interface is a form of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation, instead of text-based user interfaces, typed command labels or text navigation. GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs), which require commands to be typed on a computer keyboard.

Simple DirectMedia Layer free software multimedia library

Simple DirectMedia Layer (SDL) is a cross-platform software development library designed to provide a hardware abstraction layer for computer multimedia hardware components. Software developers can use it to write high-performance computer games and other multimedia applications that can run on many operating systems such as Android, iOS, Linux, macOS, and Windows.

FLTK library

Fast Light Toolkit is a cross-platform widget library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

PLIB has been used by many projects (not all games, and not all open-source), but has not kept pace with technical developments that happened after its original conception (e.g., shader technology), so it is currently outdated and rarely used for new projects. While nowadays there are better portable and open-source replacements for all of its components are available, a similar comprehensive suite of libraries is still missing.

Shader subroutine that may run on a graphics processing unit and is used to do shading, special effects, post processing, or general purpose computation

In computer graphics, a shader is a type of computer program that was originally used for shading but which now performs a variety of specialized functions in various fields of computer graphics special effects or does video post-processing unrelated to shading, or even functions unrelated to graphics at all.

Extent

PLIB comprises a number of semi-autonomous libraries that you can pretty much mix and match - using as much or as little PLIB as you need. The components libraries are:

Picoscopic User Interface Library (PUI) 
a fully portable set of GUI widgets that need OpenGL and C++ to operate. Useful for games because rendering these widgets is performed very quickly by 3D accelerator hardware.
Sound Library (SL) 
a fully portable Audio driver suited to C++, GLUT and realtime applications that need low latency. Includes a simple 'MOD' music loader/player.
Standard Geometry Library(SG) 
a set of matrix and vector math functions that was specifically written to simplify the writing of efficient OpenGL programs. You need to include this code into any SSG applications. Widely used within PLIB itself.
Simple Scene Graph Library (SSG) 
a scene graph library layered on top of OpenGL. Also contains code to load and save lots of 3D file formats.
PUI Auxiliary Library (PUAUX) 
additional functionality layered onto PUI - not every PUI program will need these but they can perhaps save you some effort.
SSG Auxiliary Library (SSGA) 
additional functionality layered onto SSG - not every SSG program will need these but they can perhaps save you some effort.
Joystick wrappers (JS) 
supports more Joysticks with more axes and buttons than GLUT.
Fonts'n'Text Library (FNT) 
supports text output in OpenGL using texture mapped fonts. These are much faster to render than GLUT's fonts.
Utility Library (UL) 
a simple portability library to hide basic operating system incompatibilities. Widely used within PLIB itself.
Pegasus Network Library (NET) 
Pegasus is a C++ networking library for games.
PLIB Scripting Language (PSL) 
a very lightweight, stackless C-like scripting language.
PLIB Windowing Library (PW) 
a lightweight windowing library. This is a very basic library - it only supports a single, double-buffered RGB OpenGL window - with support for keyboard and mouse. Simple though it is, it's usually plenty for OpenGL games and other simple OpenGL applications.

Related Research Articles

The OpenGL Utility Toolkit (GLUT) is a library of utilities for OpenGL programs, which primarily perform system-level I/O with the host operating system. Functions performed include window definition, window control, and monitoring of keyboard and mouse input. Routines for drawing a number of geometric primitives are also provided, including cubes, spheres and the Utah teapot. GLUT also has some limited support for creating pop-up menus.

In computing, cross-platform software is computer software that is implemented on multiple computing platforms. Cross-platform software may be divided into two types; one requires individual building or compilation for each platform that it supports, and the other one can be directly run on any platform without special preparation, e.g., software written in an interpreted language or pre-compiled portable bytecode for which the interpreters or run-time packages are common or standard components of all platforms.

A widget toolkit, widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements used to construct the graphical user interface (GUI) of programs.

Standard Widget Toolkit graphical widget toolkit for use with the Java platform

The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform. It was originally developed by Stephen Northover at IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE. It is an alternative to the Abstract Window Toolkit (AWT) and Swing Java graphical user interface (GUI) toolkits provided by Sun Microsystems as part of the Java Platform, Standard Edition (J2SE).

PHP-GTK GTK implementation for the server scripting language

PHP-GTK is a set of language bindings for PHP which allow GTK+ GUI applications to be written in PHP. PHP-GTK provides an object-oriented interface to GTK+ classes and functions. While PHP-GTK partially supports GTK2, GTK3 is not supported at all.

Lazarus (IDE) Free cross-platform IDE for Free Pascal

Lazarus is a free cross-platform visual integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler.

The Visual Component Framework (VCF) is an abandoned open source project for development under Microsoft Windows and Apple Macintosh that is distributed under the BSD license. It is an advanced C++ application framework that makes it easier to produce GUI-based C++ applications. The framework is C++ design and has built in support for rapid application development. The framework is designed to be portable over multiple platforms and compilers.

A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and running on the CPU, common in embedded systems, or being hardware accelerated by a GPU, more common in PCs. By employing these functions, a program can assemble an image to be output to a monitor. This relieves the programmer of the task of creating and optimizing these functions, and allows them to focus on building the graphics program. Graphics libraries are mainly used in video games and simulations.

JFace

JFace is defined by the Eclipse project as "a UI toolkit that provides helper classes for developing UI features that can be tedious to implement." The Standard Widget Toolkit (SWT) is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented.

Clutter is a GObject-based graphics library for creating hardware-accelerated user interfaces. Clutter is an OpenGL-based 'interactive canvas' library and does not contain any graphical control elements. It relies upon OpenGL (1.4+) or OpenGL ES for rendering,. It also supports media playback using GStreamer and 2D graphics rendering using Cairo.

XFast

XFast is a lightweight desktop environment that incorporates a display manager and a window manager within the same process. It is portable and works on many devices. Here the communication between server layer and desktop layer can be made in classical way via TCP/IP but depending on the configuration and target system it can be done via shared memory too.

A software widget is a relatively simple and easy-to-use software application or component made for one or more different software platforms.

Abstract Window Toolkit

The Abstract Window Toolkit (AWT) is Java's original platform-dependent windowing, graphics, and user-interface widget toolkit, preceding Swing. The AWT is part of the Java Foundation Classes (JFC) — the standard API for providing a graphical user interface (GUI) for a Java program. AWT is also the GUI toolkit for a number of Java ME profiles. For example, Connected Device Configuration profiles require Java runtimes on mobile telephones to support the Abstract Window Toolkit.

Simple and Fast Multimedia Library cross-platform software development library designed to provide a simple application programming interface (API) to various multimedia components in computers

Simple and Fast Multimedia Library (SFML) is a cross-platform software development library designed to provide a simple application programming interface (API) to various multimedia components in computers. It is written in C++ with bindings available for C, Crystal, D, Euphoria, Go, Java, Julia, .NET, Nim, OCaml, Python, Ruby, and Rust. Experimental mobile ports were made available for Android and iOS with the release of SFML 2.2.

GLFW is a lightweight utility library for use with OpenGL. GLFW stands for Graphics Library Framework. It provides programmers with the ability to create and manage windows and OpenGL contexts, as well as handle joystick, keyboard and mouse input.

JWt is an open-source widget-centric web application framework for the Java programming language developed by Emweb. It has an API that uses established GUI application development patterns. The programming model is component-based and event-driven, similar to Swing.

mpv (media player) free and open-source media player

mpv is media player software, based on MPlayer and mplayer2. It is free and open-source software released under a mix of licenses including GNU General Public License version 2 or later (GPLv2+), with parts under GNU Lesser Public License version 2.1 or later (LGPLv2.1+), and some optional parts under GNU General Public License version 3 (GPLv3).

References