Текстура не отображается правильно с шейдером - PullRequest
0 голосов
/ 11 января 2019

У меня есть видео текстура, которую я должен ввести в шейдер 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);

Но это дает только черный цвет вместо текстуры. Где я не прав?

1 Ответ

0 голосов
/ 11 января 2019

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

Должно быть так:

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

...