Добавьте две текстуры на одну сетку WEBGL - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно добавить две текстуры на одну сетку.У меня есть октаэдр с текстурой, и я хочу добавить вторую текстуру над ним.Как мне этого добиться?Первая текстура появляется, а вторая нет.Я создал две разные текстуры в своем файле .js и включил 2 разных слота текстуры для них обоих.Я связал текстуры и передал слоты текстур как униформу в фрагментном шейдере.Я думаю, что мой HTML-файл неверен, поэтому я прилагаю код HTML-файла.

<script id="shader-fs" type="x-shader/x-fragment">
     precision mediump float;

     varying vec2 vTextureCoord;
     varying vec3 vLightWeighting;

     uniform sampler2D uSampler; 
     uniform sampler2D uSampler1;

     void main(void) {
         vec3 c;
         vec4 textureColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
         vec4 textureColor1 = texture2D(uSampler1, vec2(vTextureCoord.s, vTextureCoord.t));           

        c = textureColor.rgb * textureColor.a + textureColor1.rgb * textureColor1.a * (1.0 - textureColor.a);
        gl_FragColor= vec4(c, 1.0);
     }
    </script>

    <script id="shader-vs" type="x-shader/x-vertex">
     attribute vec3 aVertexPosition;
     attribute vec3 aVertexNormal;
     attribute vec2 aTextureCoord; 

     uniform mat4 uMVMatrix;
     uniform mat4 uPMatrix;
     uniform mat3 uNMatrix;

     uniform vec3 uLightingDirection;
     uniform vec3 uDirectionalColor;

     varying vec2 vTextureCoord;
     varying vec3 vLightWeighting;

     void main(void) {
         gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 0.5);
         vTextureCoord = aTextureCoord; 

         vec3 transformedNormal = uNMatrix * aVertexNormal; 
         float directionalLightWeighting = max(dot(transformedNormal, uLightingDirection), 0.0);
         vLightWeighting = uDirectionalColor * directionalLightWeighting;
     }
    </script>
...