WebGL はインデックス 255 を使用したインデックス描画をサポートしていません
P粉265724930
P粉265724930 2023-08-17 12:37:59
0
1
475
<p>これは最も単純な WebGL テスト プログラムで、uint8 値 255 を 1 つだけ含むインデックス バッファを作成します。サイズ 64px の赤い正方形が描画されるはずですが、描画されません (描画にはインデックス値は関係ありません)。 </p> <p>WebGL は、符号なしバイト範囲内にあるにもかかわらず、インデックス 255 の要素を無視します。 254 またはその他の値を使用すると、赤い四角形が期待どおりに表示されます。 </p> <p>これは WebGL のバグですか、それとも予想される動作ですか?関連する情報が見つかりません。 </p> <pre class="brush:php;toolbar:false;"><canvas width="800" height="600"></canvas> <スクリプトタイプ="モジュール"> let Canvas = document.querySelector("canvas"); let gl = Canvas.getContext("webgl2", {antialias: false}); let vert = gl.createShader(gl.VERTEX_SHADER); let frag = gl.createShader(gl.FRAGMENT_SHADER); let prog = gl.createProgram(); letindex_buf = gl.createBuffer(); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,index_buf); gl.bufferData( gl.ELEMENT_ARRAY_BUFFER、新しい Uint8Array([255])、gl.STATIC_DRAW ); gl.shaderSource(vert, `#バージョン 300 es ボイドメイン() { gl_Position = vec4(pos, 1); gl_PointSize = 64.0; } `); gl.shaderSource(frag, `#バージョン 300 es 精度の高い浮動小数点; vec4 カラーを出力します。 ボイドメイン() { カラー = vec4(1,0,0,1); } `); gl.compileShader(vert); gl.compileShader(frag); gl.attachShader(prog, vert); gl.attachShader(prog, frag); gl.linkProgram(prog); gl.clearColor(0, 0, 0, 1); gl.clear(gl.COLOR_BUFFER_BIT); gl.useProgram(prog); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,index_buf); gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_BYTE, 0); </script></pre> <p><br /></p>
P粉265724930
P粉265724930

全員に返信(1)
P粉476883986

表示 WebGL 2.0 仕様 - PRIMITIVE_RESTART_FIXED_INDEX は常に有効です :

したがって、インデックス タイプが UNSIGNED_BYTE の場合、インデックス 255 は original restart インデックスであり、頂点のインデックス付けには使用できません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート