35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
# unigi
|
|
unigi (Universal Graphics & Input) is a collection of headers, that implement a cross-platform API for drawing to the screen (framebuffer or window), and taking inputs (keyboard, mouse, joypad).
|
|
|
|
This repository contains documentation, links and example applications.
|
|
|
|
<img src="assets/preview.png" title="Preview">
|
|
|
|
# Compatibility
|
|
* Highly compatible with compilers (C89, simple preprocessors)
|
|
* No `make` required, entirely configurable from your compiler, or header files
|
|
* Supports wide range of hardware (16-bit+, little/big endian)
|
|
* Standardized 16-bit color format (AAAARRRRGGGGBBBB, effectively 12-bit on most platforms)
|
|
* Screen coordinates are standardized
|
|
* Decent performance (Though some performance is sacrificed for standardization)
|
|
|
|
# Layers
|
|
A unigi app is built from different layers:
|
|
* **[Headers](https://git.lumen.sh/Fierelier/unigi.headers)** - The functions to be implemented by the Platform
|
|
* **Platform** - Implements the functions from Headers to work on a particular system (see below for a list)
|
|
* **...** - Optionally, more layers
|
|
* **App** - Your code, uses other layers for input/output
|
|
|
|
# Platforms
|
|
Platforms act as the translation layer for different systems. The idea is to minimize the amount of work it takes to port graphical applications.
|
|
|
|
## Official platforms
|
|
* **[SDL1](https://git.lumen.sh/Fierelier/unigi.platform.sdl1)** - The highly compatible SDL 1.2, works on old Linux and Windows 95+
|
|
* **SDL2 (soon)** - SDL 2.x, works on somewhat recent Linux and Windows XP+
|
|
* **DOS (soon)** - DOS (Disk Operating System), compatible with FreeDOS and MS-DOS
|
|
* **PSP (soon)** - PlayStation Portable gaming console
|
|
* **Null (soon)** - A placeholder that does "nothing", good if you want to test basic compilation for an unsupported platform
|
|
|
|
## Third party platforms
|
|
...
|