1

我一直在编写一个粉丝复制的游戏,我正在编写代码,但我一直被这个问题困扰。现在我在曲线路径上逐个像素地绘制纹理,但这会将长曲线上的每秒帧数从 4000 减少到 50。无论如何,我需要逐个像素地存储 Vector2 + 长度数据,这样我就可以沿着它产生静态速度运动,也可以循环它来绘制曲线。

我需要能够绘制的曲线是 Bezier、Circular 和 Catmull。

在此处输入图像描述

关于如何提高效率的任何想法?

4

2 回答 2

1

也许我误解了这个问题,但我做过一次:

创建曲线并在其上采样 x 点。(红点)通过计算每个点的交叉向量来创建一个网格。(绿线)在所有这些之间建立一个四边形。所以基本上我的照片中有5个。

将 U 坐标设置在垂直平面上,V 坐标跟随曲线长度。所以开头为0,结尾为1。如果您希望纹理重复,您当然可以缩放 V。 在此处输入图像描述

于 2015-10-08T10:22:52.133 回答
0

关于如何提高效率的任何想法?

假设纹理需要是动态的,使用着色器在 GPU 端绘制纹理。在 CPU 端绘制它不仅速度很慢,而且当您需要每帧将其发送回 GPU 时,CPU 和 GPU 都会陷入困境。在 GPU 端绘制它要好得多。

无论如何,我需要逐个像素地存储 Vector2 + 长度数据

着色器可以将附加信息存储到纹理中。例如,即使您可以分配一个 RGBA 纹理,但这并不意味着当您的着色器将解释数据时它需要存储颜色信息。

于 2015-10-08T05:47:02.760 回答