StickerProcessor.paintToTexture
收藏
我的收藏

基础库 2.32.0 开始支持本方法,低版本需做兼容处理,这是一个同步方法。

将输入的图像纹理经过贴纸处理后绘制到输出图像纹理上。

语法

StickerProcessor.paintToTexture(inputTexture, outputTexture)

参数说明

inputTexture

类型

默认值

必填

说明

最低支持版本

WebGLTexture


输入的图像纹理,需要是 native canvas(canvas v2) 产生的一张 WebGL Texture。

2.32.0

outputTexture

类型

默认值

必填

说明

最低支持版本

WebGLTexture


输出的目标纹理,需要是 native canvas(canvas v2) 产生的一张 WebGL Texture,使用贴纸后的效果会被绘制在这张纹理上。

2.32.0

返回值

代码示例

开发者工具中预览

Page({
  onLoad: function () {
    console.log("Welcome to Mini Code");
  },

  onReady: function () {
    tt.createSelectorQuery()
      .select("#myCanvas")
      .node()
      .exec((res) => {
        this.canvas = res[0].node;
        this.gl = this.canvas.getContext("webgl");
        this.render = require("./render");
        this.render.initRenderContext(this.gl);
      });
  },
  requestEffectCamera: function () {
    this.effectCameraStream = tt.createEffectCameraStream(this);
    this.effectCameraStream.onRequest(() => {
      this.effectCameraStream.play();
    });
    this.effectCameraStream.onPlay((video) => {
      this.video = video;
      this.videoTexture = this.render.createTexture(
        this.gl,
        video.width,
        video.height
      );
      this.processedTexture = this.render.createTexture(
        this.gl,
        video.width,
        video.height
      );
      console.log("video size: ", video.width, video.height);
      this.render.renderVideoToTexture(this.gl, this.video, this.videoTexture);
      const paint = () => {
        console.log("paint");
        this.render.renderVideoToTexture(
          this.gl,
          this.video,
          this.videoTexture
        );
        this.processor.paintToTexture(this.videoTexture, this.processedTexture);
        this.render.renderToScreen(this.gl, this.processedTexture);
        this.canvas.requestAnimationFrame(paint);
      };
      paint();
    });
    this.effectCameraStream.request();
  },
  requestSticker: function () {
    console.log("request sticker");
    this.stickerManager = tt.createStickerManager("1404075");
    this.stickerManager.onLoad((processor) => {
      console.log("sticker loaded");
      this.processor = processor;
    });
    this.stickerManager.onError((err) => {
      console.log("sticker load failed, ", err);
    });
    this.stickerManager.load();
    console.log("start request sticker");
  },
});

Bug & Tip

  • Tip: 参数仅支持 native canvas(canvas v2)纹理