【发布时间】:2011-10-30 04:30:46
【问题描述】:
我想知道为什么在与 cuda 交互时初始化 vbo 的方法会对 fps 产生很大影响。 当我创建 vbo 时,有两种可能性:
-
vbo 只保留给定数据大小的内存空间(在这种情况下,粒子的位置是 第一次在内核中写入vbo,然后在内核中修改):
gl.glBufferData(GL3.GL_ARRAY_BUFFER, n_particles * 4 * Sizeof.FLOAT, null, GL3.GL_DYNAMIC_DRAW); -
vbo 保留给定数据大小的内存空间并获取一些初始数据(粒子的位置 - 当然这些值稍后会在内核中修改)
gl.glBufferData(GL3.GL_ARRAY_BUFFER, n_particles * 4 * Sizeof.FLOAT, FloatBuffer.wrap(particlesPositions), GL3.GL_DYNAMIC_DRAW);
1.~408 帧/秒 2.~75 帧/秒
您可以使用 Nvidia GPU Computing SDK 中的简单 OpenGL 示例检查此行为。
【问题讨论】: