如何在没有实例化,TF等的情况下使OpenGL / PyOpenGL中的顶点独立移动

时间:2018-04-10 20:28:37

标签: glsl pyopengl particles

我正在使用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)。我现在用这个变量进行测试,取代了重力。

有什么想法吗?

非常感谢,

0 个答案:

没有答案