1

私はこれらの優れたチュートリアルに従ってきましたが、テクスチャがオンになっていないオブジェクトを照らす方法を理解できないようです。つまり、チュートリアルで指定されたシェーダーでは、オブジェクトをテクスチャがないことに惹かれます。私はこれを説明するのに苦労していますが、webGL 照明がどのように機能するかを知っている人にとって、ここに大量のコードをダンプしても役に立たないと思います。

単純なピラミッド オブジェクトで使用する例を教えてください。

ポリゴン内のすべての三角形の法線があるので、それは問題ではありません。

4

1 に答える 1

0

テクスチャを使用したくない場合は、1x1 ピクセルの白いテクスチャを使用するのが最も簡単な方法です。

tex = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, tex);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE,
              new Uint8Array([255, 255, 255, 255]));

それ以外の場合は、テクスチャを使用しない別のシェーダーが必要です。つまり、コードを介してさまざまなパスを管理することで、コードがより複雑になります。ただし、そのルートに進みたい場合は、シェーダーを見て、texture2Dそれを色に置き換えます。たとえば、コードが

gl_FragCoord = texture2D(u_samplers, v_texcoord);

に変更します

gl_FragCoord = vec4(1,0,0,1);  // just use red

または、それを設定できるようにしたい場合は、

uniform vec4 u_color;

gl_FragCoord = u_color;  // get color from uniform

その色を次のように設定できるようになりました

// at init time
colorLocation = gl.getUniformLocation(program, "u_color");

// at draw time
gl.uniform4fv(colorLocation, [1, 0, 0, 1]);  // set color to red
于 2013-04-08T16:22:44.057 に答える