【发布时间】:2015-03-24 07:48:13
【问题描述】:
由于opengles中没有累积缓冲区,我要做什么来实现追踪?如果我用frame buffer来模拟,是不是为了让尾巴看起来顺滑,成本会不会太高?
【问题讨论】:
标签: opengl-es libgdx glsl fragment-shader
由于opengles中没有累积缓冲区,我要做什么来实现追踪?如果我用frame buffer来模拟,是不是为了让尾巴看起来顺滑,成本会不会太高?
【问题讨论】:
标签: opengl-es libgdx glsl fragment-shader
通常没有足够的数据来从单个状态创建跟踪。如果球改变运动方向,即使包括速度也会使它看起来很差。因此,之前的对象状态的某种信息是非常必要的。
可以使用单独的通道来保存之前的状态,例如模板缓冲区,甚至可以创建衰减系统的 Alpha 通道。这意味着您将在每一帧的此通道上绘制球,但在绘制它之前,您会将整个通道减少一些值,以便“较旧”的部分慢慢淡出。这种单独的球绘制需要类似于径向渐变,这样您将获得相对平滑的轨迹,但远非完美,并且对于相对快速的移动,一些额外的后期处理将是强制性的,除非结果是偶然的预期效果。
更合适的方法是在 CPU 上包含对象位置跟踪。只需继续在堆栈上推送当前位置并删除那些太旧的位置(例如保留 20 个最新位置)。然后使用这些位置创建一个代表球尾的形状。在这一点上,机会是无限的。例如,您可以将尾巴设计为图像,然后从位置创建一个类似矩形的形状,如果操作得当,会产生很棒的尾巴效果。
【讨论】: