《春日记》开发记录【5】
来源:互联网 发布:英伟达显卡驱动优化器 编辑:程序博客网 时间:2024/05/05 01:00
自己用Laravel写的小博客和CSDN的博客以后同步更新:
《春日记》开发记录【5】
这次我来讲一下在一些特殊的需求上,我是怎么实现的。
总体来看这次我牺牲了可重用性换来更低复杂性。
我把所有的模块都设置为强自治的系统,即模块所有需要的资源都由模块自己收集。
上层模块只负责调用其初始化接口,享受即插即用的服务。
Painter
在春日记中,所有的绘图都是以矩形作为图元的,我使用三角扇形来实现。
而OpenGL使用buffer中的序列化数据来作为一个图元的绘制数据。
为了避免每帧都生成一个长数据块拖慢速度。
我是用painter中的紧邻数组来管理sprite数据,
当OpenGL绘制的时候只需将数组整块拷贝过去即可。
为了让使用起来更流畅,使用painter创建一个sprite后,
sprite会被返回。
其中包含了一些设置位置、锚点之类的操作。
这些操作最终还是在修改painter数组中的紧邻数据段。
它提供了一个简单初始化,能初始化一个读取精灵并且迅速返回。
这时就可以一边绘制读取精灵,一边进行完全初始化。
Frame
opengl的初始化操作也被封装在这里,所以需要绘图线程来运行它的初始化。
没有使用深度检测和蒙版检测,只打开了反走样和混合功能。
Resource
这里为了将其它模块简化,我将这个模块的返回资源限定必须为最简单最直接的类型。
即如果painter来的读取,虽然资源文件是加密过后的Png,
也必须返回最直接的rgba32数组图像,这样可以将其它模块和复杂的加密资源文件隔开。
资源文件中的贴图是一张一张的png,它负责将贴图解码后拼接在一起,
提高opengl的效率。同时它也负责读取剧情脚本,即时从ttf生成字体位图。
- 《春日记》开发记录【5】
- 《春日记》开发记录【1】
- 《春日记》开发记录【2】
- 《春日记》开发记录【3】
- 《春日记》开发记录【4】
- 《宇春日记2》正在进行时
- 凉宫春日的暴走5
- 青春与阳光——李宇春日记
- 春日留影
- 夏天春日
- 春日温情
- 春日畅想
- 春日施种
- 春日喜屎
- 轻吻这春日的阳光
- iOS开发记录(5)
- 开发记录
- 开发记录.
- 多项式链表
- 思维导图:概率论
- 四轴飞行器建模和控制(二)
- 第33讲项目1——利用循环求和
- Python中os模块
- 《春日记》开发记录【5】
- Unity 读写XML
- VS2010下安装配置OpenCV2.4.4
- 树状数组略解
- 62-题目1080:进制转换
- 求不超过N的正整数中因子最多的数
- org.apache.jasper.JasperException: Unable to compile class for JSP:
- 更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支
- 4. Median of Two Sorted Arrays