我的任务是创建一个喷泉模拟与水粒子和水面的碰撞。
我的问题是:如何创建/检测喷泉粒子和水面碰撞?-我想知道,如何从飞机的着色器/GL缓冲区和粒子的着色器/GL缓冲区获取/连接信息以进行碰撞-我知道水波方程和碰撞检测方法-我只是不知道是什么允许OpenGL的API。
发布于 2012-12-11 02:42:12
你所描述的问题与OpenGL的工作描述不符。OpenGL是一个绘图应用程序接口,它的目的是绘制漂亮的图片。像碰撞检测这样的事情完全超出了OpenGL的范围。
但是,您可以使用OpenGL实现基于图像的算法,以执行与您的问题相匹配的基于图像的测试。在你的例子中,我会在正交投影中从顶部渲染水面,然后渲染每个启用了深度测试的粒子。使用遮挡查询,我会测试粒子是否仍然可见。对于每一帧,我会比较粒子的可见性是否发生了变化:如果它消失了,它就会沉入水下并发生碰撞。
这种方法是有效的,但坦率地说,它完全是过度设计的。只需测试地面上的颗粒高度是否大于平均水位;对于小的波纹波,这是足够准确的。
发布于 2012-12-11 02:41:59
您需要做的是调查与OpenGL进行OpenCL互操作的可能性。在here中查找显示使用OpenCL (使用OpenGL渲染)的粒子碰撞模拟的nVidia示例。OpenGL作为一种计算应用程序接口是非常有限的,而且很难做到你想做的事情而不跳槽(我想这是可能的--只是不是很容易)。
https://stackoverflow.com/questions/13806327
复制相似问题