我正在使用OpenGL构建粒子模拟器,并尝试对设置粒子的各种方法进行基准测试。在我进行实例化或转换反馈之前,我想仅使用标准VBO创建 独立 移动点。
到目前为止,我已经尝试通过使用glBufferSubData更新缓冲区数据来移动点,填充空缓冲区。但是,一旦接近10,000点,帧速率就会下降。我最终需要至少几百万的目的。
此时我正在尝试使用转换矩阵并进行以下操作:
在我的着色器中:
in layout(location = 0) vec3 positions;
uniform mat4 transform[10];
void main(){
int count = 0;
count + 1;
gl_Position = transform[count] * vec4(positions, 1.0);
}
并在我的程序中绘制循环:
self.matrices[i] = Matrix44.from_translation(Vector3([0.0,-self.t,0.0]))
glUniformMatrix4fv(self.transformMatrixNameloc,10,GL_FALSE,self.matrices[i])
虽然这似乎有效,但每次为每个新粒子绘制时,我都无法获得重置/重启的时间(self.t)。我现在用这个变量进行测试,取代了重力。
有什么想法吗?
非常感谢,