lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7697|回复: 5
打印 上一主题 下一主题

drawTriangles的问题

[复制链接]

9

主题

0

好友

117

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2016-12-26 14:45:55 |显示全部楼层 |倒序浏览
大神,我drawTriangles后绘制到图片,火狐耗时100ms ,而 chrome耗时10000ms,不知道是那个地方出现问题
单独写个测试程序又没有什么问题,不知道你知不知道是什么原因
回复

使用道具 举报

9

主题

0

好友

117

积分

士兵

Rank: 1

沙发
发表于 2016-12-26 16:51:54 |显示全部楼层
<script>
        var start = 0,
                end=0;

function main() {
        LGlobal.setDebug(true);
        var loadList=[
                {
                        name: 'flat',
                        path: 'http://192.168.1.88/test/20150421172713993125.png'
                        //形状图
                },
                {
                        name: 'img',
                        path: 'http://192.168.1.88/test/20150403150850798922.jpg'
                        //覆盖图
                }
               
        ];
        LLoadManage.load(loadList, function() {}, function(result) {
                var imgBitmapdata=new LBitmapData(result['img']);
                var imgBitmap=new LBitmap(imgBitmapdata);


                var flatBitmapdata=new LBitmapData(result['flat']);
                var flatBitmap=new LBitmap(flatBitmapdata);
                var flatLayer=new LSprite();
                flatLayer.addChild(flatBitmap);
                imgBitmap.blendMode = LBlendMode.SOURCE_IN;
                flatLayer.addChild(imgBitmap);

                var newBitmapdata = new LBitmapData(null, 0, 0, flatLayer.getWidth(), flatLayer.getHeight(), LBitmapData.DATA_CANVAS);
                newBitmapdata.draw(flatLayer);

                start=new Date().getTime();//开始计时

                //执行变形
                imgLayer = new LSprite();
                imgLayer.graphics.clear();
                imgLayer.graphics.beginBitmapFill(newBitmapdata);
                var vertices=[0,0,0,482,454,0,454,482];
                var indices=[0,2,1,2,1,3];
                var uvtData=[0,0,0,1,1,0,1,1];
                imgLayer.graphics.drawTriangles(vertices, indices, uvtData);
               
               
                var layer = new LSprite();
                layer.graphics.drawRect(0, "#000000", [0, 0, 191, 274]);
                layer.addChild(imgLayer);

                var bitmapdata = new LBitmapData(null, 0, 0, 191, 274, LBitmapData.DATA_CANVAS);
                bitmapdata.draw(layer);

                var bitmap = new LBitmap(bitmapdata);
                addChild(bitmap);

                end = new Date().getTime();//结束计时
                trace(end - start);//输出
        });
}


init(50, 'legend', 1200, 1200, main); </script>
回复

使用道具 举报

9

主题

0

好友

117

积分

士兵

Rank: 1

板凳
发表于 2016-12-26 16:54:00 |显示全部楼层
这是我的代码,执行最简单的变形,chrome 耗时50ms左右,而火狐只需要2ms左右
你可以执行看下,图片地址要换
回复

使用道具 举报

9

主题

0

好友

117

积分

士兵

Rank: 1

地板
发表于 2016-12-26 16:54:17 |显示全部楼层
这是我的代码,执行最简单的变形,chrome 耗时50ms左右,而火狐只需要2ms左右
你可以执行看下,图片地址要换
回复

使用道具 举报

9

主题

0

好友

117

积分

士兵

Rank: 1

5#
发表于 2016-12-26 16:54:33 |显示全部楼层
本帖最后由 donnier 于 2016-12-26 17:02 编辑

不好意思,点多了
回复

使用道具 举报

9

主题

0

好友

117

积分

士兵

Rank: 1

6#
发表于 2016-12-27 09:00:22 |显示全部楼层
但是,如果我把代码改成这样,效率上chrome比火狐快,不知道怎么回事,因为我需要上面哪种方式,大神知道怎么改进吗
<script>
        var start = 0,
                end=0;

function main() {
        LGlobal.setDebug(true);
        var loader = new LLoader();
        loader.addEventListener(LEvent.COMPLETE, function(event) {
                var imgBitmapdata = new LBitmapData(event.target);

                start=new Date().getTime();
                var imgLayer = new LSprite();
                imgLayer.graphics.clear();
                imgLayer.graphics.beginBitmapFill(imgBitmapdata);

                var vertices=[0,0,0,482,454,0,454,482];
                var indices=[0,2,1,2,1,3];
                var uvtData=[0,0,0,1,1,0,1,1];
                imgLayer.graphics.drawTriangles(vertices, indices, uvtData);
               
                var layer = new LSprite();
                layer.graphics.drawRect(0, "#000000", [0, 0, 191, 274]);
                layer.addChild(imgLayer);

                var bitmapdata = new LBitmapData(null, 0, 0, 191, 274, LBitmapData.DATA_CANVAS);
                bitmapdata.draw(layer);

               
                var bitmap = new LBitmap(bitmapdata);
                addChild(bitmap);
                end = new Date().getTime();
                trace(end - start);
               

        });
        loader.load('http://192.168.1.88/test/4B3D9D0D9596683EA01C9D7BF2CEB00F.png', 'bitmapData');
}


init(50, 'legend', 1200, 1200, main); </script>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-30 09:17 , Processed in 0.049960 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部