游戏很卡-关于游戏如何优化的问题

现在一个地图几百人后 GL VERTS有2W多 GL Calls是2500 游戏很卡
游戏有缓存 有合成大图 有压缩图片
占用内存在150M左右 就是感觉渲染效率低下 所以游戏很卡 有没有大神指点下怎么优化

gl 定点数两万多,就算全部都是图片,也得3300多个精灵,做粒子呢?卡顿是必然的,GL Calls太高了,你可以调整渲树层级让引擎绘制的时候相邻glstate自动合并,但是你这定点数太多无解,你需要做一个算法优化个数或者直接截图如下

local function testRendererTex()
    local plistInfo = display.loadCutomPlistImage("app/display/test1.plist")
    local scene = display.getScene()
    local smallLayer1 = display.newLayer(cc.c3b(0xff,0xff,0x00),display.size)
    smallLayer1:addTo(scene):align(display.CENTER)

    local function createSpriteTest()
        for i=1,1000 do
            if true then
                local spr = cc.Sprite:createWithSpriteFrame(display.getCutomPlistImage(plistInfo,"btn-a-1.png"))
                spr:addTo(smallLayer1):align(display.LEFT_BOTTOM,math.random( 0,500 ),math.random( 0,500))
            end
        end
    end

    local function noUseCached()
        createSpriteTest()
    end
    -- noUseCached()

    local function useCached()
        local renTex = cc.RenderTexture:create(display.width,display.height, cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888)
        renTex:addTo(scene):align(display.CENTER)

        renTex:begin()
        createSpriteTest()
        smallLayer1:visit()
        renTex:endToLua()

        smallLayer1:setVisible(false)
    end
    useCached()
end
testRendererTex()

不好意思才看见 我想问下 这段代码只调用一次吗?游戏中人物是移动的 我每帧调用的话 划线屏幕花屏了

RenTex不应该每帧调用(当然你也可以每帧),RenTex属于很消耗性能的API,你可以优化到0.1秒调用一次,把在0.1秒之内不变或者忽略变换的(算法统计和剔除)的部分使用RenTex。

多谢 我每一帧都调了 但是帧数并没有提上去啊 还是20帧左右

RenTex 每帧调用还不如不调用了。你的精灵太多,就算GPU没问题,你的CPU需要遍历好多精灵,你可以设定最多精灵不超过500个(算法隐藏不重要的精灵或者结点),应该会好一点

好的 多谢了 我再研究研究

屏幕外的东西直接隐藏,立刻快很多