bluecodecat / LibSpritesGUI_12864

能够运行在单片机上的多图层128*64精灵图2D引擎系统

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LibSpritesGUI

上古神器 I : 精灵图2D图形引擎

想要一个能在单片机上运行的高性能的2D图形引擎, 却不知道怎么如何下手? 没问题!

想要制作一些简单的GUI, 却苦于不想写字库的处理? 没问题!

想要开发一点复杂的GUI, 但是资源有限跑不动市面上的GUI库? 没问题!

甚至是想要制作复杂的动画, 甚至是制作一款2D RPG游戏? 也是没问题!

让这个库帮你解决掉这些烦恼!

注意: 该项目因涉及大量整型运算优化, 需要至少16位机方可运行

请放弃手里的51单片机吧, 建议使用STM32/ESP8266/ESP32等更加先进又便宜的设备来运行

image

(演示视频位于static/demo.mp4)

它可以做什么?

  • 128x64分辨率, 黑白输出, 适合绝大多数便宜的12864屏幕

  • 最大可同时输出256个完全不同的精灵图

  • 支持5个图层(查找表)的叠加渲染

  • 除背景图层外, 每个图层均支持图层透明度信息

  • 每个图层均支持横向或纵向滚屏模式

  • 高强度优化, 算法内无任何浮点和除法算法, 在STM32F103C6T6(64MHz HSI)环境下能够稳定24-30FPS+

  • 仅需4.5KB的几乎挑战极限的内存占用

所以这到底是个什么黑科技?

这个库源于一个非常古老的技术 —— 精灵图技术, 在早期的FC游戏机、SFC游戏机、GBA游戏机等曾经被大规模应用.

后随着时间的流逝和技术的发展, 这项技术逐渐被丰富的空余资源和更高的处理器性能所遗忘.

如今这项技术就像是消失在了互联网上, 几乎再也找不到它的影子了. 更有很多人听都没听说过这种2D引擎技术.

这个项目就是想将这一种古老而高效的技术保存下来, 让大家重新有机会能够学习到这种技术 —— 原来一个黑白12864屏不仅仅是可以显示几个汉字, 其实还可以这样玩!

所以能给我讲讲它的原理么?

当然可以!

每个精灵图都是一个8x8的像素图, 你可以理解为这是 “字库” .

这个库要做的就是根据每个图层的精灵图编号信息, 找到对应的字库, 进行图层位移和叠加计算之后输出在屏幕上.

因为精灵图可以重复使用, 且算法并没有直接保存完整的图形内容, 所以该算法十分节省内存资源.

而计算精灵图本身也不是一件复杂的事情, 并不需要消耗太多的CPU资源.

因此这个技术曾在早期的游戏机上得到过大规模的应用, 虽然时代可能已经将其忘记, 但是这真的非常适合运行在小内存单片机上!

所以有没有Example代码呢?

当然有的啦, 正在整理, 稍后上传, 大家莫急.

所以最后, 开源许可证呢?

MIT License, 代码无任何担保. 不过, 如果你发现了什么BUG, 欢迎提出issue或者开pull request.

About

能够运行在单片机上的多图层128*64精灵图2D引擎系统

License:MIT License


Languages

Language:C 65.5%Language:Assembly 34.5%