我有一个CGPoints数组(基本结构有两个浮点数:x和y)。我想使用OpenGL ES使用这些点绘制纹理曲线。我只用两点就可以做到这一点,但是当我需要从几个点做一条线时会变得更难。
目前我水平画一条线,从给定的点计算它的角度,然后旋转它。我不认为对曲线中的所有线都这样做是个好主意。可能有更快的方法。
我想我可以立刻“放大”或“收缩”所有点,以制作某种宽度的曲线。
答案 0 :(得分:1)
我不想肯定你想要完成什么,但请考虑一下:
根据有序的点列表,您可以使用这些点绘制折线。如果你想要一条带有2D纹理的折线,你可以绘制一系列四边形(当然每个都使用两个三角形)。您可以使用类似于catmul-rom样条生成的想法生成这些四边形。
考虑一系列点p [i-1],p [i],p [i + 1]。现在,对于每个i,你可以找到两个点,每个距离p [i]的距离垂直于连接p [i-1]和p [i + 1]的直线。您可以通过各种方式确定为端点生成的两个点,例如使用从p [0]到p [1]的直线。
我不确定这是否比你的方法更快,但你应该缓存结果。如果您计划每帧都这样做,可能需要另一种解决方案。