博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
creator摄像机的使用
阅读量:509 次
发布时间: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/

你可能感兴趣的文章