loadTexture(url, initialColor) {
var tex = gl.createTexture();
// start with a single color.
gl.bindTexture(gl.TEXTURE_2D, tex);
var pixel = new Uint8Array(initialColor);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, pixel);
// start loading the image
var img = new Image();
img.src = url;
img.onLoad = function() {
// when the image has loaded update the texture.
gl.bindTexture(gl.TEXTURE_2D, tex);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
gl.generateMipmap(gl.TEXTURE_2D);
}
return tex;
}
// Load a tree texture, use brown until the texture loads.
var treeTexture = loadTexture("tree.png", [255, 200, 0, 255]);
// Load a water texture, use blue until it loads.
var waterTexture = loadTexture("water.jpg", [0, 0, 255, 255]);
を次のように私はかかるだろうなアプローチがあり、それらすべてが青のテクスチャにデフォルト設定が、これはhttp://webglsamples.googlecode.com仕事上のサンプルの方法をほとんどです。
ソリッドカラーを使用し、低解像度のテクスチャをロードし、高解像度のテクスチャをロードすると、そのアイディアを簡単に拡張できます。
注:上記のコードでは、2のべき乗のテクスチャを読み込んでいることを前提としています。そうでない場合は、テクスチャパラメータを正しく設定する必要があります。
さて、数ヶ月後に私自身の質問を読んだ後、私は何を求めているのか理解しています。私自身の質問に完全に答えるには、以下を読んでください。 テクスチャとカラーを同時にロードするには、x-フラグメントとx-頂点の2組のスクリプトが必要です。 1つはカラー用、もう1つはテクスチャ用です。 DOMを介して引き込まれるので、オブジェクトを初期化するときに正しいシェーダIDを使用するだけです。色や質感があります。これは、私のような無駄なWebGLの底を助けてくれることを願っています。 –