WebGL tidak menyokong lukisan indeks menggunakan indeks 255
<p>Ini ialah program ujian WebGL yang paling mudah, yang mencipta penimbal indeks dengan hanya satu nilai uint8 255. Ia sepatutnya melukis segi empat sama merah bersaiz 64px, tetapi tidak (nilai indeks tidak penting untuk lukisan). </p>
<p>Entah bagaimana WebGL mengabaikan elemen pada indeks 255 walaupun ia berada dalam julat bait yang tidak ditandatangani. Menggunakan 254 atau nilai lain, segi empat sama merah muncul seperti yang dijangkakan. </p>
<p>Adakah ini pepijat dalam WebGL atau tingkah laku yang dijangkakan? Saya tidak dapat mencari sebarang maklumat yang berkaitan. </p>
<pre class="brush:php;toolbar:false;"><canvas width="800" height="600"></canvas>
<script type="modul">
biarkan kanvas = document.querySelector("kanvas");
biarkan gl = canvas.getContext("webgl2", {antialias: false});
biarkan vert = gl.createShader(gl.VERTEX_SHADER);
biarkan frag = gl.createShader(gl.FRAGMENT_SHADER);
biarkan prog = gl.createProgram();
biarkan index_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, `#versi 300 es
batal utama()
{
gl_Position = vec4(pos, 1);
gl_PointSize = 64.0;
}
`);
gl.shaderSource(frag, `#versi 300 es
terapung tinggi ketepatan;
keluar warna vec4;
batal utama()
{
warna = 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>