博客
关于我
creator摄像机的使用
阅读量:511 次
发布时间:2019-03-07

本文共 2561 字,大约阅读时间需要 8 分钟。

onToast() {        //0        //clearFlags一般除了最底层的摄像机里需要全部打勾,其他摄像机就不需要勾选了,        //不然上层摄像机(depth == -1)会把下层的摄像机(depth == -2)画面清除。//1. // depth// 摄像机深度,用于决定摄像机的渲染顺序。值越大,则摄像机越晚被渲染。// 越晚被渲染,场景显示的是最晚的摄像机 所照到的东西。// 我这Main Camera应该是最晚被渲染(值最大)//2.分组// Main Camera不包含所要截图分组// Camera只包含所要截图分组// 被截图的节点,默认分组default要修改。//3.摄像机要跟随这所要截取的节点,否则有可能截取不到。(可以跟随也可以不跟随)// 如果不跟随,则可以利用第0条,将想要截取的图,用下层摄像机抓取,并同时利用上层摄像机清除下层摄像机的画面。// 场景显示的是最上层摄像机所抓取的场景。下层摄像机此时是可抓取所要截取的同组节点。        cc.Camera.cameras;        cc.log("cc.Camera.cameras ==", cc.Camera.cameras);        //let node = new cc.Node();        //node.parent = cc.director.getScene();        //let camera = node.addComponent(cc.Camera);        let smile = cc.find("smile", this.node);        //会通过查找当前所有摄像机的 cullingMask 是否包含节点的 group 来获取第一个匹配的摄像机。        let camera = cc.Camera.findCamera(smile);        cc.log("camera ==", camera);        camera.x = smile.x;        camera.y =  smile.y;        //camera = cc.Camera.cameras[1];        // 设置你想要的截图内容的 cullingMask        //camera.cullingMask = 0xffffffff;        // 新建一个 RenderTexture,并且设置 camera 的 targetTexture 为新建的 RenderTexture,这样 camera 的内容将会渲染到新建的 RenderTexture 中。        let texture = new cc.RenderTexture();        let gl = cc.game._renderContext;        let x = smile.width*5;        let y = smile.height*5;        // 如果截图内容中不包含 Mask 组件,可以不用传递第三个参数        texture.initWithSize(cc.visibleRect.width, cc.visibleRect.height, gl.STENCIL_INDEX8);        //texture.readPixels (null, x, y, x, y)        //texture.initWithSize(x, y);        camera.targetTexture = texture;        // 渲染一次摄像机,即更新一次内容到 RenderTexture 中        camera.render();        // 这样我们就能从 RenderTexture 中获取到数据了        let data = texture.readPixels();        // 接下来就可以对这些数据进行操作了        let canvas = document.createElement('canvas');        let ctx = canvas.getContext('2d');        let width = canvas.width = texture.width;        let height = canvas.height = texture.height;        canvas.width = texture.width;        canvas.height = texture.height;        let rowBytes = width * 4;        for (let row = 0; row < height; row++) {            let srow = height - 1 - row;            let imageData = ctx.createImageData(width, 1);            let start = srow * width * 4;            for (let i = 0; i < rowBytes; i++) {                imageData.data[i] = data[start + i];            }            ctx.putImageData(imageData, 0, row);        }        let dataURL = canvas.toDataURL("image/jpeg");        let img = document.createElement("img");        img.src = dataURL;        cc.log("dataURL == ",dataURL );    },

转载地址:http://easjz.baihongyu.com/

你可能感兴趣的文章
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>
MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
查看>>
MySQL不同字符集及排序规则详解:业务场景下的最佳选
查看>>
Mysql不同官方版本对比
查看>>
MySQL与Informix数据库中的同义表创建:深入解析与比较
查看>>