zoukankan      html  css  js  c++  java
  • Starling学习笔记分享,starling内部渲染机制与性能优化

    转自:http://bbs.9ria.com/thread-103993-1-1.html

    starling由于过度模仿flash.display.*里面的类,也带来一些性能上的问题,当我们创建超过300个displayObject时,FPS就会明显下降,所以我们先了解下STARLING是如何处理内部渲染的

    打开starling的核心文件可以看到一句代码,而且是强引用

    1. stage.addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);


    然后starling会对内部任何继承displayObject的对象进行实事绘制,这样就造成了性能底下,也就是说,如果你的FPS是60/S,那么如果你创建500个显示对象,那每秒你需要执行60*500=30000次绘制,所以基本上我们知道问题是在哪里,然后我们看看starling.display里面的类是如何处理render

    默认情况,starling自带的displayObject是不做任何的render处理,只是存在一个这样的方法而已,当我们自定义一个显示对象时,我们就需要自己override这个render方法,所以归根结底我们还是需要对context3D有一些了解,否则我们是不能去自己开发一些扩展类的

    到此各位应该知道,当我们通过starling创建一些游戏的时候,如何优化性能,其实最大的点就是有效减少displayobject的创建,比如我们可以在一个display里面使用多个texture等,这样就减少了starling的循环绘制,性能会得到很大的改善,但是我们需要对context3d有一些了解,否则是无法扩展的,当然官方也提供了一些第三方的扩展类,大家可以自己去下载使用

    另外starling的对alpha=0/visible=true/remoeChild的任何显示对象都会不做任何重绘处理,(其实FP的内部绘制接口速度是很快的,真正的原因就是FOR循环导致),但是for循环的总数依然是不变的,我想以后的版本肯定会修复这个问题

  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/2935613.html
Copyright © 2011-2022 走看看