zoukankan      html  css  js  c++  java
  • [cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化

    引言:

    我们在进行手机游戏开发的过程中,由于手机的内存资源是有限的,那么对纹理贴图的优化是非常有必要的,有可能相同的功能,优化的好与不好对内存资源的消耗是非常明显的,下面我就用一个例子来说明一下。

    说明:

    cocos2d-x游戏开发过程中,左下角的三个参数对我们游戏开发者来说,是非常重要的三个参数指标。第一个是场景中精灵的渲染次数,该数字越大说明越耗资源,我们尽量让这个数字越小越好。第二个数字是每帧之间的时间间隔。第三个参数是每秒调用的帧数,尽量让它保持在60左右,显得游戏是最流畅的。

    操作说明:

    我在场景中随机生成100个相同的精灵,看看两种不同的效果。

    操作步骤:

    1.没有优化之前

    代码:

    for (int i=0; i<100; i++) {
            CCSprite *sp = CCSprite::create("Icon.png");
            
            int x = arc4random()%480;
            int y = arc4random()%320;
            
            sp->setPosition(CCPointMake(x, y));
            this->addChild(sp);
        }

    效果:


    2.优化了之后

    代码:

    CCSpriteBatchNode* batchNode = CCSpriteBatchNode::create("Icon.png", 10);
        batchNode->setPosition(CCPointZero);
        this->addChild(batchNode);
        
        for (int i=0; i<100; i++) {
            CCSprite *sp = CCSprite::create("Icon.png");
            
            int x = arc4random()%480;
            int y = arc4random()%320;
            
            sp->setPosition(CCPointMake(x, y));
            batchNode->addChild(sp);
        }

    效果:



    效果对比:

    优化了之后,明显的看的出第一幅图第一个参数是1000,也就是说精灵渲染了1000次,这是比较消耗资源的。第二幅图,第一个参数只渲染一次。 还有就是由于模拟器调用的是PC的内存所以内存比较大,对第三个参数是不会有多大的影响的,但如果是真机调试的话效果会很明显,第一种情况会明显的比较卡。
  • 相关阅读:
    利用数据库复制技术 实现MSSQL数据同步更新
    育子两篇你会教育自已的小孩吗
    hdu 1046 Gridland (找规律题)
    hdu 1022 Train Problem I (栈的操作,还水了半天)
    hdu 4022 Bombing (强大的map一对多的映射)
    POJ 1702 Eva's Balance (数论,平衡三进制)
    hdu 3951 Coin Game (博弈)
    hdu 1058 Humble Numbers (DP初步)
    hdu 2084 数塔 (DP初步)
    hdu 1056 HangOver (打表水题)
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3317893.html
Copyright © 2011-2022 走看看