我有一个粒子系统,其中,位置和各种属性存储在顶点缓冲器对象。该值由CUDA内核不断更新。目前我使用GL_POINTS平圆刚使它们。我所感兴趣的是使这些颗粒像三维动画模型鸟例如更复杂的东西。我试图找出最好的方法是什么。谈话的目的可以说鸟模型的动画是由3张(翅膀的位置,什么不可以)

我可以看到模型加载成显示列表和在平移遍历所有的颗粒,旋转等的矩阵则调用显示列表。这似乎是一个理想的方法并不因为它需要将所有的粒子数据到主机从GPU只是做矩阵运算,以推回GPU(除非我可以调用从CUDA内核的绘图功能? ?)

我不知道很多关于着色器,他们将能够处理这样的事情?

在这一点上我主要是找请教追求的是什么渠道,但如果你知道处理这个问题的任何文章或教程,荣誉。


我正在与OpenGL的本机工作在Windows 7 64位用C ++。我不使用GLUT

有帮助吗?

解决方案

您可能想使用:EXT_draw_instanced。我从来没有实际使用实例化,但大多数现代GPU(GF6和起来,我认为)让你喂GPU模型和点的列表,并把它在每一点上绘制模型。

我将谷歌一些更多的信息,看看我想出....

嗯,这是官方的规格,它看起来像他们有它的教程。

http://www.opengl.org/registry/specs/ARB /draw_instanced.txt

其他提示

您将需要得到创造性做这样的事情。如果使用CUDA来计算位置和旋转到2个3成分浮子纹理,然后用每个顶点烧制“索引”沿着并递增1每geometry实例然后可以编写加载纹理着色器,然后使用顶点着色器纹理查找选择来自2个纹理相关像素,并建立一个转换矩阵。然后你可以通过你已经建立了变换矩阵变换网格的绿党。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top