/README.md (fdf801afc64559c1f28e7541d20fff748ed08ec1) (1751 bytes) (mode 100644) (type blob)

# CFPS

FGC is a 3D graphics library written in C99. It can be used as a foundation for building graphics applications. Currently supports PC and Android targets.

CFPS is a game engine built on top of FGC.

## Philosophy

Keep it lightweight and simple above all else. Use mature tools and GL3/GLES3 for compatibility. Make it feel good to use and easy to change.

## Boring details

FGC provides a public API that is primarily designed to display 3D graphics with OpenGL ES 2.0. However, it utilizes abstracted generality in the forms of internal helper functions and external helper libraries. These helpers do mundane things like context initialization and image loading. Advanced features like GPU selection are ignored. The public API provides a high level of abstraction to make graphics application development go faster.

For example, the internal function `_fgcLoadSurface` loads an `SDL_Surface` into client memory, utilizing commands from SDL, SDL_Image, and stb_image, depending which headers were included before `fgc.h`. The `.bmp` format is always supported, but SDL_Image and stb_image each allow loading `.png`, `.jpg`, and other formats. `fgcLoadTexture` uses `_fgcLoadSurface` internally to load textures.

Each FGC API call represents dozens or even hundreds of lines of code. This high level of abstraction makes things simple for you, the application programmer. If you need more advanced features, you can modify the library. API documentation is provided in `fgc.h`. `test.c` provides an example of usage.

## Android

Android earned *persona non grata* status in the larger software development community by being a royal pain to work with. Fortunately, FGC apps run on Android if you have 8 GB of free space for compilation.

Mode Type Size Ref File
100644 blob 38 695eda73b280483a65538083a0f72332636c5d3d .gitignore
100644 blob 2939 cbeae2f15a147f5e27de93c390949661b24a7d92 Makefile
100644 blob 1751 fdf801afc64559c1f28e7541d20fff748ed08ec1 README.md
040000 tree - 7b33f439136f67a2e9835bc58e521b412cbfa729 base
040000 tree - 3eea0ba020e5b605711b9382499c957c566175fb include
040000 tree - 999a394a0d7346bde07840be1390cb1f5dd9cc2b src
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/fluffrabbit/cfps

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/fluffrabbit/cfps

Clone this repository using git:
git clone git://git.rocketgit.com/user/fluffrabbit/cfps

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main