README(ENGLISH).md

November 22, 2024 · View on GitHub

PainterEngine Title

中文

PainterEngine is a cross-platform graphics engine written in C language, with support for Windows, Linux, iOS, Android, WebAssembly, and even bare-metal embedded platforms without OS. It is built on a component-based design pattern, making it accessible to even C language beginners. PainterEngine Make enables you to compile your PainterEngine project for multiple platforms with just one click. It covers various fields including basic data structures, graphics, acoustics, digital signal processing, compiler design, virtual machine systems, cryptography, human-computer interaction, game engines, FPGA-GPU graphics acceleration, and more. You can use it to create mini-applications or as a learning project for acquiring knowledge.

30-Second Quick Start Guide to PainterEngine

To incorporate PainterEngine into your project, all you need is:

#include "PainterEngine.h"

Utilize PainterEngine_Initialize to swiftly create a graphical interactive interface:

#include "PainterEngine.h"
int main()
{
    PainterEngine_Initialize(800, 600);
    return 1;
}

Create components or even craft your own:

#include "PainterEngine.h"
int main()
{
    PainterEngine_Initialize(800, 600);
    PX_Object_Firework01Create(mp, root,200,600);
    PX_Object_Firework01Create(mp, root,400,600);
    PX_Object_Firework01Create(mp, root,600,600);
    return 1;
}

PainterEngine firework

Use "PainterEngine Make" to quickly compile and deploy your project to various platforms such as Windows, Linux, WebAssembly, Android, and more. One-click compilation and deployment, with no need to modify the source code, enabling seamless portability at zero cost.

PainterEngine make

Swift development and smooth transitions

If you don't need the one-key compilation feature provided by PainterEngine Make and prefer to develop PainterEngine programs or components using your preferred IDE, you just need to:

  1. Add all the code from "PainterEngine/core", "PainterEngine/kernel", and "PainterEngine/runtime" to your project.

  2. Select your working platform in "PainterEngine/platform" (eg: choose "PainterEngine/platform/windows" for Windows), and add all the code from the corresponding folder to your project.

  3. Include the directory containing PainterEngine source code in your project's include directories.

  4. Add your code to the project.

Not just a graphics library but also an application framework.

FunctionsSupportDescription
memorypoolalloc/freePlatform-agnostic memory management implementation
mathsin/cos/tan/arcsin/log/exp/relu/...The complete implementation of the vast majority of C standard math libraries
signal processingdft/dct/fft/dwt/window functions/mfcc/...Fourier/Cosine/Wavelet Transform, common window functions, MFCC, and other signal processing fundamental functions and higher-level feature extraction algorithms, etc.
Data structuresstring/vector/list/map/stack/fifo/circular-buffer/...Platform-agnostic common data structures and algorithms
Cryptographycurve25519/AES/SHAx/MD5/...This includes commonly used symmetric key algorithms and key exchange algorithms
image codecPNG/JPG/GIF/BMPSupports decoding of PNG/JPG/GIF/BMP images and encoding of PNG images
audio codecWav/Mp3Supports decoding of Wav/Mp3 and encoding of Wav
fontmoduleTTFSupport fontmodule of truetype(reference: stb_truetype.c)
GeometricLine/Triangle/Rectangle/Circle/Ring/Sector/Rounded/...Geometric rasterization
Renderer2D/3DImplementation of a 2D/3D software renderer. A painting engine
soundVC codec/mixer/piano/ksIncludes an implementation of a VC(voice conversion), a mixer, a physically-modeled piano and Karplus-Strong string synthesis. Direct synthesis of PCM audio streams
Animation2dx/live2D2D frame-by-frame animation and a Live2D-style animation system
PainterScriptCompiler/VM/DebuggerA complete scripting engine, including a compiler, virtual machine, and debugger
UIbutton/radio/image/edit/label/list/...Implementation of common UI controls
protocalsMQTT/MODBUS/Game-network-synchronizationCommon communication protocols
Game frameworkPainterEngine Game Framework
FPGA-GPU2D acceleratorImplemented an FPGA-based GPU graphics accelerator that provides at least 50 million pixels per second (Mpps) 2D Blender acceleration for PainterEngine and supports HDMI output. Validation has been completed on the Zynq-7000 series SoC

The FPGA-GPU Graphics Acceleration Solution

A GPU IP core based on FPGA has been developed and functionally verified on the Zynq 7020 platform. It provides 2D Blender graphics rendering acceleration with a performance of no less than 50Mpps (Million pixels per second) and supports HDMI output. This solution has been successfully validated on the Zynq 7000 series SoC.

PainterEngine designer

PainterEngine designer

PainterEngine designer

Component-based development with support for a designer mode, making it as simple as it gets

PainterEngine designer

An abundance of components to unleash your creativity without limitations.

PainterEngine market

PainterEngine market

PainterEngine market

PainterEngine market

Now, join the PainterEngine.com contribute to its development.

logo logo logo logo logo logo

logo logo logo logo logo logo

logo logo logo logo logo logo

logo logo logo logo logo logo