我发布了经过批处理优化的v0.3版,点击下载:https://github.com/hammerc/hammerc-study-Stage3D/archive/v0.3.zip

先看看我们批处理优化后程序的效果吧!

首先,为了能明显的看出差距,我把未优化v0.2版本的MovieClipTest.swf的动画数量调到250个,同时QuadBatchTest.swf的代码一致也是250个动画,只是使用的是经过批处理优化的v0.3版本。

为了查看实际的性能差异,我使用了scout,下面看看我们的成果吧:

MovieClipTest.swf的帧率:

QuadBatchTest.swf的帧率:

MovieClipTest.swf的3D绘制:

QuadBatchTest.swf的3D绘制:

我们从Stage3D的绘制记录就可以看出来了,未优化的版本,绘制次数太多,每帧都存在250次DrawCall,所以对帧率造成了巨大的影响,而优化的版本由于所有的250个动画其实状态都没有改变,所以可以合并为一次DrawCall,绘制记录甚至都不需要出现滚动条!这主要是由于批处理技术为我们极大的减轻了CPU同GPU进行数据交换的时间。

Starling高效游戏设计的好文推荐,精华都在这两个文章中了,看官们这个必读哦:

Starling性能优化方案

Starling性能优化技巧

纹理集:

纹理集是把多个纹理(图片)集合到一个纹理(图片)的技术,需要配合一个数据文件来描述其中的某个图片的区域位置。

纹理集在2D渲染中并没有特别的好处,但在使用3D渲染2D的情况下有一个优势,因为该优势的存在,开发高效游戏时纹理集甚至是必须使用的!

还记得我们在批处理那一个笔记中谈到的状态改变么?如果渲染的纹理改变,则状态必须改变,那么就会多出一个DrawCall,如果我们有一个飞机纹理,同时有一个子弹纹理,那么绘制两个图形时必定会执行两次DrawCall,但是如果使用纹理集把这两个纹理合并了呢?没错,状态不会改变了,因为使用的是同一个纹理,仅仅是uv坐标不一致而已!所以,但我们的纹理集中的纹理越多,我们的绘制会越高效!

更多细节可以查看文章Starling性能优化方案

ATF:

ATF SDK 压缩纹理简介

Adobe Texture Format (ATF) 工具用户指南

ATF格式是由Adobe官方提供的转换工具从图片格式转换而得的,转换工具放在Gaming SDK的Utilities\ATF Tools文件夹内,鉴于从Adobe官方下载Gaming SDK比较坑爹,所以我上传到百度网盘供各位下载:

Adobe Gaming SDK 1.4 下载

【Stage3D学习笔记续】山寨Starling(十):高效游戏设计、纹理集和ATF的更多相关文章

  1. 【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现

    批处理是使GPU进行高效绘制的一种技术手段,也是整个渲染流程中最核心的技术,到目前为止我们并没有使用到这种技术手段,下面我们看看我们现在的渲染机制. 先想一想我们最开始是怎么向GPU绘制一幅图像的,可 ...

  2. Stage3D学习笔记(五):通过矩阵操作纹理

    虽然我们上一节已经实现了正交矩阵的显示,但是可以明显的感觉到要调整显示纹理的坐标和尺寸是相当复杂的,需要对每个顶点进行操作,如果还要加上注册点和旋转的话,用上一节的方法来做是会让人发疯的! 所以我们距 ...

  3. 【Stage3D学习笔记续】山寨Starling(十二):总结和一些没提到的东西

    我们的山寨Starling到这里就告一段落了,不得不说这是一个非常优秀的2D框架,他的设计和架构为后来的许多框架都提供了很好的参考,比如现在正在崛起的Egret,我们的一番解读也只是窥见了Starli ...

  4. 【Stage3D学习笔记续】山寨Starling(十一):Touch事件体系

    我们的山寨Starling版本将会在这里停止更新了,主要还是由于时间比较有限,而且我们的山寨版本也很好的完成了他的任务“了解Starling的核心渲染”,接下来的Starling解析我们将会直接阅读S ...

  5. 【Stage3D学习笔记续】山寨Starling(二):VertexData探幽

    还记得之前的学习笔记中我们的顶点缓冲数组中的顶点数据么,我们使用一个一维数组来记录所有的顶点数据,这是由于顶点缓冲上传数据时是使用的一维数组. 如果对顶点数据进行一层代码的封装,就能更加的方便我们来操 ...

  6. 【Stage3D学习笔记续】真正的3D世界(一):透视矩阵

    如果各位看官跟着我的学习笔记一路看过来的话,一定会吐槽我的,这都是什么3D啊?从头到尾整个都是在使用GPU绘制一堆2D图像而已,的确,之前我们一直使用正交矩阵利用GPU加速来实现2D世界的展示,算不上 ...

  7. 【Stage3D学习笔记续】山寨Starling(四):渲染代码实现及测试程序

    本章会实现最核心的代码,所以涉及点会比较多,这里会发布一个版本,方便日后的回退查看. 点击下载:https://codeload.github.com/hammerc/hammerc-study-St ...

  8. 【Stage3D学习笔记续】山寨Starling(三):Starling核心渲染流程

    这篇文章我们剔除Starling的Touch事件体系和动画体系,专门来看看Starling中的渲染流程实现,以及其搭建的显示列表结构. 由于Starling是模仿Flash的原生显示列表,所以我们可以 ...

  9. 【Stage3D学习笔记续】山寨Starling(一):从事件说起

    我在GitHub上新开了一个项目:https://github.com/hammerc/hammerc-study-Stage3D 山寨的Starling版本我取名叫做Scorpio2D,以后的笔记中 ...

随机推荐

  1. linux 新建用户、用户组 以及为新用户分配权限

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号 一方面可以帮助系统管理员对使用系统的用户进 ...

  2. umount nfs状态为busy的处理方法

    umountall状态为busy的系统: 以下四种情况,文件系统都会显示:umount: file_system_name busy 1 A program is accessing a file o ...

  3. Android开发之ListView-ArrayAdapter的使用

    ArrayAdapter: ArrayAdapter<String>(Context context, int resource, int textViewResourceId, Stri ...

  4. poj 1260 Pearls(dp)

    题目:http://poj.org/problem?id=1260 题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠. 珍珠的替代必须是连续的,不能跳跃 ...

  5. 将archlinux 2013-06-01版,安装配置为个人工作站

    本文安装所使用的镜像为:archlinux-2013.06.01-dual.iso.首先请看看我安装完成之后的效果.图一,是第一个虚拟桌面及右键菜单图: 图二,是第二个虚拟桌面效果图.后几个虚拟桌面图 ...

  6. [POJ 1674] Sorting by Swapping

    Sorting by Swapping Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9514   Accepted: 50 ...

  7. I.MX6 android 禁止低电量自动关机

    /************************************************************************ * I.MX6 android 禁止低电量自动关机 ...

  8. oracle导入到Excel

    一.从oracle到处数据到excel文件方法一.直接从PL/SQL中,全选数据,然后复制粘贴到excel中: 方法二.同样是通过PL/SQL,在数据列中,点击右键-->导出结果-->选择 ...

  9. (2015年郑州轻工业学院ACM校赛题) J 堆

    判断是否是一个堆,把树构造好遍历一遍就OK了 #include<stdio.h> #include<iostream> #include<stack> #inclu ...

  10. C# 检测机器是否有声卡设备

    有时候我们的程序需要进行音频的播放,则我们首先需要判断机器是否有声卡能够进行音频的播放.在网上找了一下没有发现太多关于如何检机器是否有声卡的例子.我在看了一些文档后自己写了一个小测试程序,如果机器装有 ...