WebGL はインデックス 255 を使用したインデックス描画をサポートしていません
P粉265724930
P粉265724930 2023-08-17 12:37:59
0
1
356

これは最も単純な WebGL テスト プログラムで、uint8 値 255 を 1 つだけ含むインデックス バッファを作成します。サイズ 64px の赤い正方形が描画されるはずですが、描画されません (描画にはインデックス値は関係ありません)。

WebGL は、符号なしバイト範囲内にあるにもかかわらず、インデックス 255 の要素を無視します。 254 またはその他の値を使用すると、赤い四角形が期待どおりに表示されます。

これは WebGL のバグですか、それとも予想される動作ですか?関連する情報が見つかりません。

 <スクリプトタイプ="モジュール"> 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); 


P粉265724930
P粉265724930

全員に返信 (1)
P粉476883986

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

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

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!