Events 在mousemove事件期间尝试设置点大小时,WebGL bufferSubData不起作用
我想使用webGL在mousemove事件期间绘制不同的点大小。例如,我按下鼠标并绘制大小为1像素的点。然后选择一个不同的大小,当我按下鼠标并移动时,我可以用新的大小绘制点 我发现了一些奇怪的事情,非常感谢您的反馈Events 在mousemove事件期间尝试设置点大小时,WebGL bufferSubData不起作用,events,webgl,mousemove,Events,Webgl,Mousemove,我想使用webGL在mousemove事件期间绘制不同的点大小。例如,我按下鼠标并绘制大小为1像素的点。然后选择一个不同的大小,当我按下鼠标并移动时,我可以用新的大小绘制点 我发现了一些奇怪的事情,非常感谢您的反馈 我创建了一个点大小数组: var pointSizes = new Uint8Array(2000); attribute float pointSize; 我向着色器添加了一个属性以获取点大小: var pointSizes = new Uint8Array(2000);
var pointSizes = new Uint8Array(2000);
attribute float pointSize;
var pointSizes = new Uint8Array(2000);
attribute float pointSize;
主要功能有:
gl_PointSize=PointSizefor(var i = 0; i<=1999; i++)
{pointSizes[i] = 5.0;} //draw points of size 5
aPointSizeBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, aPointSizeBuffer);
gl.bufferData(gl.ARRAY_BUFFER, pointSizes, gl.STATIC_DRAW);
aPointSize = gl.getAttribLocation(program, "pointSize");
gl.vertexAttribPointer(aPointSize, 1, gl.UNSIGNED_BYTE, false, 0, 0);
gl.enableVertexAttribArray(aPointSize);
gl.bindBuffer(gl.ARRAY_BUFFER, aPointSizeBuffer);
pointSizes[index] = fpointSize; //this is the selected size
gl.bufferSubData(gl.ARRAY_BUFFER, index, pointSizes[index]);
我是否做了以下任何一件事都无关紧要:
gl.bufferSubData(gl.ARRAY_BUFFER, index, fpointSize);
甚至:
gl.bufferSubData(gl.ARRAY_BUFFER, index,1);
再次感谢您的帮助。bufferSubData要求第三个参数为TypeArray。您的
点大小[索引]
似乎是uint8。尝试使用pointSizes.subarray(索引,索引+1)
并查看是否可以修复它