为什么我的程序在渲染128个粒子时速度慢?我认为这不足以达到每秒30帧。在
我所做的就是渲染128个粒子并给它们一些基本的引力
论绘制函数
def on_draw(self, time=None):
glClearColor(0.0, 0.0, 0.0, 1.0)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
self.particles.append(Particle())
for particle in self.particles:
particle.draw()
if particle.is_dead:
self.particles.remove(particle)
粒子类别
^{pr2}$
我对使用
GL_TRIANGLE_FAN
不太满意,因为它在使用批处理渲染时会产生很多奇怪的形状。所以考虑转移到GL_TRIANGLES
,只需将所有点添加到对象中,而不是依靠GL来关闭形状。在这样,您就可以轻松地转到进行批处理渲染:
简单地说,在我的nvidia1070上,我成功地从这段代码中获得了大约35fps的速度,这并不令人兴奋。但它是1000个物体*边,给或取。在
我改变的本质是:
^{pr2}$在绘制循环中,将执行以下操作:
而不是为每个粒子对象调用
Particle.draw()
。这样做的是,它会将所有对象在一个巨大的批处理中发送到图形卡,而不是告诉显卡要逐个对象渲染什么。在
正如@thokra所指出的,您的代码比GPU更需要CPU。
希望这能修复它或者给你一些提示。在
这段代码大部分来自我和我的一个好朋友不久前做的一个局域网项目:
因为我没有你所有的代码,主要是主循环。我将您的问题应用到我自己的代码中,并通过稍微调整来“解决”它。再次,如果需要的话,希望它能帮助你,从github项目中窃取想法。新年快乐!在
相关问题 更多 >
编程相关推荐