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循环的总数依然是不变的,我想以后的版本肯定会修复这个问题

  • 相关阅读:
    「luogu2414」[NOI2011]阿狸的打字机
    【模板】KMP算法,AC自动机
    「luogu2336」[SCOI2012]喵星球上的点名
    「luogu2463」[SDOI2008]Sandy的卡片
    【模板】后缀数组
    「luogu1972」 [SDOI2009]HH的项链
    北师大部分题解
    D:Sequence Swapping
    Tinkoff Internship Warmup Round 2018 and Codeforces Round #475 (Div. 2)
    点双连通分量F. Simple Cycles Edges
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/2935613.html
Copyright © 2011-2022 走看看