Universal Graphics & Input
Go to file
2024-06-16 20:07:18 +02:00
assets Add preview 2024-04-21 14:23:00 +02:00
LICENSE Initial commit 2024-04-21 13:35:56 +02:00
README.md Update README.md 2024-06-16 20:07:18 +02:00

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.

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 - The functions to be implemented by the Platform
  • Platform - Implements the functions from Headers to work on a particular system
  • ... - 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 - 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