C++ 在这种情况下我应该使用顶点着色器吗?
我想通过渲染和添加混合运动对象在一帧过程中轨迹上的多个点来创建运动模糊效果 我认为确定绘制位置的计算可以在顶点着色器中执行。但是,在我看来,如果我想避免为每个渲染传递几何体,我可能需要使用几何体着色器 我最好的做法是什么?我决定:C++ 在这种情况下我应该使用顶点着色器吗?,c++,opengl,graphics,opengl-es,shader,C++,Opengl,Graphics,Opengl Es,Shader,我想通过渲染和添加混合运动对象在一帧过程中轨迹上的多个点来创建运动模糊效果 我认为确定绘制位置的计算可以在顶点着色器中执行。但是,在我看来,如果我想避免为每个渲染传递几何体,我可能需要使用几何体着色器 我最好的做法是什么?我决定: 手动组装每个子帧的顶点数据,并每次将其传递给GPU(如果这样做,我不需要顶点程序) 将几何图形与速度值一起发送。我可以计算顶点着色器中的中间位置,但我不确定如何指定将特定速度值指定给特定的基本体组。我需要为每个子帧渲染发送一次相同的顶点,因为顶点着色器无法创建新顶点
- 使用VBO渲染所有内容-如果您使用这样的VBO/显示列表,您基本上可以使用更高硬件加速的选项#1
- 插值问题-可能不值得您努力获得精确的插值。除非对象移动得非常快且弯曲,否则速度的线性插值(一阶)可能很好。您还可以通过包括加速(二阶)来改进它,但额外的阶数或更精确的物理模型可能值得付出努力或成本
- 可能不值得——这才是问题的症结所在。根据您的应用程序、硬件和其他细节,这些可能的解决方案中的任何一个都可能优于另一个。如果性能很重要,您可能应该尝试每一个的原型实现,并在您的目标设备上运行基准测试,以查看什么最适合。(可悲的现实是,在完成所有工作之前,您无法轻松执行基准测试。)
这当然是实现运动模糊的一种方法。但是现在运动模糊是通过片段着色器中的向量模糊后处理过滤器实现的。有关其工作原理的说明,请参见。为了实时,必须使用后期处理着色器再现该过程。有趣的链接。谢谢我正在渲染一个2d场景,我想做的是利用快速图形管道,通过多次渲染同一对象而不是只渲染一次并进行处理,来产生更高的保真度结果。@StevenLu:矢量模糊也适用于2d。“快速图形管道”指的是什么?我以前的2d运动模糊实现使用了带有片段着色器的方向模糊方法,问题是它会模糊和混合非运动对象