如何在 webgl 中使用顶点缓冲区对象来定位粒子
How to use vertex buffer objects in webgl to position particles
你好,我对3D编程有点陌生。我正在尝试提高我正在模拟的粒子系统的效率。目前我正在以这种方式绘制粒子系统:
for (var j = 0; j < maxParticleSystems; j++) {
var currentParticleSystem = world.particleSystems[j];
var particles = currentParticleSystem.GetPositionBuffer();
var maxParticles = particles.length;
for (var k = 0; k < maxParticles; k += 2) {
context.drawImage(particleImage, (particles[k] * mToPx) + offsetX, (particles[k + 1] * mToPx) + offsetY);
context.fill();
}
}
这基本上一次绘制一个粒子,这非常慢。我一直在做一些阅读,我读到了webGL中的位置缓冲区对象。我该如何用一个来画这些?
对于Stack Overflow来说,这个问题可以说是一个太宽泛的问题。WebGL只是一个光栅化API,这意味着有无数种方法可以用它渲染和/或计算粒子。
一些常见的方法
-
在 JavaScript 中计算粒子位置,在 WebGL 中使用
POINTS
渲染
在 JavaScript 中计算粒子位置,在 WebGL 中使用四边形渲染(渲染四边形允许您定向粒子)
在着色器中仅根据时间计算粒子位置,渲染
POINTS
。在着色器中仅根据时间计算粒子位置,渲染四边形
通过帧缓冲读取和写入纹理的状态,计算着色器中的粒子位置
以及数百种其他变体。
使用webgl的粒子系统
JavaScript中的高效粒子系统?(网络GL)
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 通过WEBGL_depth_texture渲染缓冲区对象和深度纹理之间的区别是什么
- 如何将缓冲区对象转换为 Node.js 中的文件
- 节点.js流 - 缓冲区到字符串给出 [对象对象]
- 如何渲染具有位移顶点的对象的深度缓冲区
- 如何在 webgl 中使用顶点缓冲区对象来定位粒子
- Web工作程序在传递具有数组缓冲区的大型对象数组时会崩溃Chrome选项卡
- 如何在three.js中使用深度缓冲区屏蔽对象
- 读取node.js中的缓冲区对象
- WebGL从缓冲区中移除对象
- 我如何暂停一个RxJS缓冲的可观察对象基于在缓冲区中的值,因为他们被评估
- 如何使用缓冲区对象作为ffmpeg的源输入
- NodeJS-以二进制/位的形式获取缓冲区对象
- 如何将 Javascript 对象转换为节点缓冲区