【发布时间】:2014-05-21 20:22:21
【问题描述】:
不知何故,我似乎无法找到这样一个简单问题的答案 - 使用 webGL 绘制一个单点。
具体来说,我正在使用以下函数来绘制 3D 图形(但是,Z 轴由颜色表示):
不要被“3D”这个词弄糊涂了——我不想要真正的 3D,我只想使用 webGL 生成上面的图像。
每个像素行都是从一个数组生成的,Y轴代表时间。
在这里你可以看到我现在是如何填充数据的:
//Normal canvas rendering
for(var i=0, l=data.length;i<l;i++) {
h_ctx.beginPath();
//The color of the dot
h_ctx.fillStyle = "hsl("+(120-120*(data[i]/255))+", 100%, 45%)";
//Create a dot using color above
h_ctx.rect(i,iteration,1, 1);
h_ctx.fill();
h_ctx.closePath();
}
如果您想看到它的实际效果,我创建了一个JSFiddle。它需要 AudioContext 的支持。
【问题讨论】:
-
不清楚您要做什么。如果您只想在 WebGL 中绘制该图像,那么可以,最简单的方法是将这些像素放入纹理中并绘制纹理。如果你真的想画点,那么this answer 更好的问题是你为什么要在 WebGL 中这样做?您发布的 canvas 2d 解决方案有什么问题?
-
速度很慢,这是错误的。我看过一些 WebGL 演示,证明 WebGL 渲染速度更快(也许它是双缓冲的……?)。另外,我不想开始学习 webGL。我已经有一个基于画布的地图编辑器,速度很慢。