App:Library:FabGL
FabGL資料の日本語訳
FabGLは主にESP32用のグラフィックス・ライブラリです。いくつかのディスプレイドライバ(直接VGA出力用、I2CとSPI LCDドライバ用)を実装しています。
FabGLはPS/2キーボードとマウスからの入力も得ることができます。ULPコアはPS/2ポートの通信を処理し、メインCPUコアは他のタスクを実行できるようになります。
また、FabGLはオーディオエンジン、グラフィカルユーザーインターフェース(GUI)、ゲームエンジン、ANSI/VTターミナルを実装しています。
このライブラリは ESP32 revision 1 以降で動作します。
VGA出力にはデジタル・アナログ変換器(DAC)が必要です。270オームの抵抗3本で8色、抵抗6本で64色にすることが可能です。
固定幅と可変幅のフォントがいくつか埋め込まれています。
スプライトの数は無制限です。ただし、大きなスプライトや大量のスプライトはフレームレートを低下させ、ちらつきを発生させる可能性があります。
十分なメモリがある場合(320x200のような低解像度の場合)、2つのスクリーンバッファを割り当てて、ダブルバッファリングを実装することが可能です。
この場合、プリミティブは常にバックバッファに描画されます。
ダブルバッファリングまたは明示的に無効にされている場合を除いて、すべての描画は垂直リトレースで実行されるため(VGAドライバを使用)、ちらつきは表示されません。
描画するプリミティブのキューが垂直方向の再トレースが終了する前に処理されない場合、それは中断され、次の再トレースで続行されます。
オーバーラップするウィンドウとマウス処理、および多くのウィジェット(ボタン、編集ボックス、チェックボックス、コンボボックス、リストボックスなど)を備えたグラフィカルユーザーインターフェイス(GUI)があります。
最後に、モノラル出力に複数のチャンネルがミックスされたサウンドエンジンがあります。 各チャネルは、正弦波形、正方形など、またはカスタムサンプリングデータを生成できます。
VGA出力と同様に、オーディオ出力はDMAを使用して生成されます。 CPUは、オーディオチャネルをミキシングし、波形を準備するだけです。
Main classes of FabGL library:
- fabgl::VGAController, device driver for VGA bitmapped output
- fabgl::VGA2Controller, device driver for VGA 2 colors bitmapped output (low RAM requirements, CPU intensive)
- fabgl::VGA4Controller, device driver for VGA 4 colors bitmapped output (low RAM requirements, CPU intensive)
- fabgl::VGA8Controller, device driver for VGA 8 colors bitmapped output (low RAM requirements, CPU intensive)
- fabgl::VGA16Controller, device driver for VGA 16 colors bitmapped output (low RAM requirements, CPU intensive)
- fabgl::VGATextController, device driver for VGA textual output (low RAM requirements, CPU intensive)
- fabgl::SSD1306Controller, device driver for SSD1306 based OLED displays
- fabgl::ST7789Controller, device driver for ST7789 based TFT displays
- fabgl::ILI9341Controller, device driver for ILI9341 based TFT displays
- fabgl::Canvas, that provides a set of drawing primitives (lines, rectangles, text...)
- fabgl::Terminal, that emulates an ANSI/VT100/VT102/etc and up terminal (look at vttest score)
- fabgl::Keyboard, that controls a PS2 keyboard and translates scancodes to virtual keys or ASCII/ANSI codes
- fabgl::Mouse, that controls a PS2 mouse
- fabgl::Scene abstract class that handles sprites, timings and collision detection
- fabgl::uiApp base class to build Graphical User Interface applications
- fabgl::SoundGenerator to generate sound and music
- fabgl::InputBox to generate simple UI wizards
Devices emulation classes:
- fabgl::Z80, Zilog Z80 CPU emulator
- fabgl::i8080, Intel 8080 CPU emulator
- fabgl::MOS6502, MOS 6502 CPU emulator
- fabgl::VIA6522, VIA 6522 emulator
Other classes:
- fabgl::I2C, thread safe I2C (Wire) class
- fabgl::DS3231, Real Time Clock driver which uses the thread safe fabgl::I2C library
- fabgl::MCP23S17, 16 bit SPI port expander
See VGA output for VGA connection sample schema.
See PS/2 ports for PS/2 connections sample schema.
See Configuring Audio port for audio connection sample schema.