【问题标题】:Texture not rendering properly with shader纹理无法使用着色器正确渲染
【发布时间】:2019-06-06 02:27:42
【问题描述】:

我有一个视频纹理,我必须将其输入到 glsl 着色器中。我为此使用threejs。我的代码如下

let texture = new THREE.VideoTexture(video);
texture.minFilter = THREE.NearestFilter;
texture.magFilter = THREE.NearestFilter;
let vertexShader = `
        varying vec2 vuv;
        void main() {
        vuv = uv; 
        gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);
        }`
let fragmentShader = `
      varying vec2 vuv;
      uniform sampler2D texture0;
      void main() {
          gl_FragColor = texture2D(texture0,vuv);
    }`;
let uniform = { texture0: { type:'t',texture: texture } };
let material = new THREE.ShaderMaterial({ uniforms: uniform, fragmentShader: fragmentShader, vertexShader: vertexShader })
let geometry = new THREE.PlaneGeometry(1000, 1000);
let mesh = new THREE.Mesh(geometry, material);
this.scene.add(mesh);

但这只是给出黑色而不是纹理。我哪里错了?

【问题讨论】:

    标签: three.js glsl textures


    【解决方案1】:

    let uniform = { texture0: { type:'t',texture: texture } };

    必须是这样的:

    let uniform = { texture0: { value: texture } };

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多