上古神器 I : 精灵图2D图形引擎
想要一个能在单片机上运行的高性能的2D图形引擎, 却不知道怎么如何下手? 没问题!
想要制作一些简单的GUI, 却苦于不想写字库的处理? 没问题!
想要开发一点复杂的GUI, 但是资源有限跑不动市面上的GUI库? 没问题!
甚至是想要制作复杂的动画, 甚至是制作一款2D RPG游戏? 也是没问题!
让这个库帮你解决掉这些烦恼!
注意: 该项目因涉及大量整型运算优化, 需要至少16位机方可运行
请放弃手里的51单片机吧, 建议使用STM32/ESP8266/ESP32等更加先进又便宜的设备来运行
(演示视频位于static/demo.mp4)
-
128x64分辨率, 黑白输出, 适合绝大多数便宜的12864屏幕
-
最大可同时输出256个完全不同的精灵图
-
支持5个图层(查找表)的叠加渲染
-
除背景图层外, 每个图层均支持图层透明度信息
-
每个图层均支持横向或纵向滚屏模式
-
高强度优化, 算法内无任何浮点和除法算法, 在STM32F103C6T6(64MHz HSI)环境下能够稳定24-30FPS+
-
仅需4.5KB的几乎挑战极限的内存占用
这个库源于一个非常古老的技术 —— 精灵图技术, 在早期的FC游戏机、SFC游戏机、GBA游戏机等曾经被大规模应用.
后随着时间的流逝和技术的发展, 这项技术逐渐被丰富的空余资源和更高的处理器性能所遗忘.
如今这项技术就像是消失在了互联网上, 几乎再也找不到它的影子了. 更有很多人听都没听说过这种2D引擎技术.
这个项目就是想将这一种古老而高效的技术保存下来, 让大家重新有机会能够学习到这种技术 —— 原来一个黑白12864屏不仅仅是可以显示几个汉字, 其实还可以这样玩!
当然可以!
每个精灵图都是一个8x8的像素图, 你可以理解为这是 “字库” .
这个库要做的就是根据每个图层的精灵图编号信息, 找到对应的字库, 进行图层位移和叠加计算之后输出在屏幕上.
因为精灵图可以重复使用, 且算法并没有直接保存完整的图形内容, 所以该算法十分节省内存资源.
而计算精灵图本身也不是一件复杂的事情, 并不需要消耗太多的CPU资源.
因此这个技术曾在早期的游戏机上得到过大规模的应用, 虽然时代可能已经将其忘记, 但是这真的非常适合运行在小内存单片机上!
当然有的啦, 正在整理, 稍后上传, 大家莫急.
MIT License, 代码无任何担保. 不过, 如果你发现了什么BUG, 欢迎提出issue或者开pull request.