Project1

标题: MV中的截屏和模糊指令是什么? [打印本页]

作者: gaofei677    时间: 2016-2-2 23:43
标题: MV中的截屏和模糊指令是什么?
本帖最后由 gaofei677 于 2016-2-2 23:50 编辑

我知道在VA中,截屏和模糊指令是
JAVASCRIPT 代码复制
  1. Graphics.snap_to_bitmap

JAVASCRIPT 代码复制
  1. .bitmap.blur


但是在MV中是什么呢?我在
http://miaowm5.github.io/RMMV-F1/(F1帮助文档)
http://www.goodboydigital.com/pixijs/docs/classes/ImageLoader.html(PIXI.JS帮助文档)
里面都没有找到,修大侠指导~谢谢~


作者: 汪汪    时间: 2016-2-3 07:17
  1. //拍摄
  2. SceneManager.snap = function() {
  3.     return Bitmap.snap(this._scene);
  4. };
  5. //拍摄 为了背景
  6. SceneManager.snapForBackground = function() {
  7.         //背景图片 设置为 拍摄
  8.     this._backgroundBitmap = this.snap();
  9.     //背景图片 模糊
  10.     this._backgroundBitmap.blur();
  11. };
  12. //背景图片
  13. SceneManager.backgroundBitmap = function() {
  14.     return this._backgroundBitmap;
  15. };
复制代码

  1. Bitmap.snap = function(stage) {
  2.     var width = Graphics.width;
  3.     var height = Graphics.height;
  4.     var bitmap = new Bitmap(width, height);
  5.     var context = bitmap._context;
  6.     var renderTexture = new PIXI.RenderTexture(width, height);
  7.     if (stage) {
  8.         renderTexture.render(stage);
  9.         stage.worldTransform.identity();
  10.     }
  11.     if (Graphics.isWebGL()) {
  12.         var gl =  renderTexture.renderer.gl;
  13.         var webGLPixels = new Uint8Array(4 * width * height);
  14.         gl.bindFramebuffer(gl.FRAMEBUFFER, renderTexture.textureBuffer.frameBuffer);
  15.         gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, webGLPixels);
  16.         gl.bindFramebuffer(gl.FRAMEBUFFER, null);
  17.         var canvasData = context.getImageData(0, 0, width, height);
  18.         canvasData.data.set(webGLPixels);
  19.         context.putImageData(canvasData, 0, 0);
  20.     } else {
  21.         context.drawImage(renderTexture.textureBuffer.canvas, 0, 0);
  22.     }
  23.     bitmap._setDirty();
  24.     return bitmap;
  25. };
复制代码

  1. Bitmap.prototype.blur = function() {
  2.     for (var i = 0; i < 2; i++) {
  3.         var w = this.width;
  4.         var h = this.height;
  5.         var canvas = this._canvas;
  6.         var context = this._context;
  7.         var tempCanvas = document.createElement('canvas');
  8.         var tempContext = tempCanvas.getContext('2d');
  9.         tempCanvas.width = w + 2;
  10.         tempCanvas.height = h + 2;
  11.         tempContext.drawImage(canvas, 0, 0, w, h, 1, 1, w, h);
  12.         tempContext.drawImage(canvas, 0, 0, w, 1, 1, 0, w, 1);
  13.         tempContext.drawImage(canvas, 0, 0, 1, h, 0, 1, 1, h);
  14.         tempContext.drawImage(canvas, 0, h - 1, w, 1, 1, h + 1, w, 1);
  15.         tempContext.drawImage(canvas, w - 1, 0, 1, h, w + 1, 1, 1, h);
  16.         context.save();
  17.         context.fillStyle = 'black';
  18.         context.fillRect(0, 0, w, h);
  19.         context.globalCompositeOperation = 'lighter';
  20.         context.globalAlpha = 1 / 9;
  21.         for (var y = 0; y < 3; y++) {
  22.             for (var x = 0; x < 3; x++) {
  23.                 context.drawImage(tempCanvas, x, y, w, h, 0, 0, w, h);
  24.             }
  25.         }
  26.         context.restore();
  27.     }
  28.     this._setDirty();
  29. };
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1