これが適切なプロトコルかどうかはわかりませんが、次の場所にプロジェクトがあります。
https://github.com/mkarbowski/angry-bears
これは、WebGLゲームでの私の試みです。私はAndroidでOpenGLES2.0を使用したことがあるので、WebGLは大きく飛躍することはできないと考えました。しかし、スクリプトをデバッグできないことは、私を殺してしまいます。意味のあるエラーの欠如は言うまでもありません。
これが適切なプロトコルかどうかはわかりませんが、次の場所にプロジェクトがあります。
https://github.com/mkarbowski/angry-bears
これは、WebGLゲームでの私の試みです。私はAndroidでOpenGLES2.0を使用したことがあるので、WebGLは大きく飛躍することはできないと考えました。しかし、スクリプトをデバッグできないことは、私を殺してしまいます。意味のあるエラーの欠如は言うまでもありません。
まず、GLエラーが発生しています。その理由を考えてみるといいかもしれません。
「デバッグコンテキスト」を使用してそれらを見つけることができます。WebGL Wiki のこのエントリを参照してください
そこで参照されているファイルをインクルードし、この行を engine.js のコードの 26 行目に追加しました。
gl = WebGLDebugUtils.makeDebugContext(gl, function(err, funcName, args) {
throw WebGLDebugUtils.glEnumToString(err) + ": " + funcName;
});
gltexture.js には、次のようなコードがあります
texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, this.texture);
this.texture は定義されていません。たぶん、このように前に行で定義するつもりでしたか?
this.texture = gl.createTexture();
次に、画像をロードするための onload コールバックは「this」を使用していますが、コールバックのコンテキストには「this」はありません。これを修正する最も簡単な方法は、別の変数「それ」を宣言するか、プロパティを作成してbindを使用することです。
that = this; // define that
image = new Image();
image.onload = function() {
loaded = true;
gl.bindTexture(gl.TEXTURE_2D, that.texture); // using that
return gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
};
それはエラーを取り除きました
コードに従ってください。次に追加した GLUtils.useTexture にテクスチャがロードされているかどうかを確認するのではなく、
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0,
gl.RGBA, gl.UNSIGNED_BYTE,
new Uint8Array([255,0,0,255]));
GLTexture に対して、実際のテクスチャがロードされたときに置き換えられる 1 ピクセルのテクスチャで常に開始されます。
次に、TriangleTest.draw はフレームごとにバッファを作成しています。おそらくあなたが意図したものではありません。
次に、コードの周りに console.log のものを追加し始めました。クリアカラーをランダムに変更しました
gl.clearColor(0, 0, Math.random(), 1);
そうすれば、プログラムが実行されていることがわかります。
useCamera で渡している行列に射影行列がないことがわかりました。私はそれをIDに設定し、頂点を変更して、画面の前に何かを表示するためだけにクリップスペースに入るようにしました. それは黒い三角形を手に入れました。
だから私はあなたの GLUtils.useTexture を見ました。その中で、存在しない関数である texture.getTexture() を呼び出します。それをに変更する
gl.bindTexture(gl.TEXTURE_2D, texture.texture)
そして今、それは何かをレンダリングします。
その他ランダムコメント
あなたのプロジェクトで頑張ってください