我正在使用一系列三角带绘制网格。我正在使用这个来渲染一个高度场,并且完全在顶点着色器中生成顶点数据,而不使用任何输入缓冲区,只是使用顶点和实例索引。这一切都很好地工作,并且非常高效。
然而,现在我发现自己还需要在这个网格上实现边框线。显然,这里的解决方案将类似于 marching squares。基本上,我想要实现的是这样的: 黑点代表网格中属于某个集合的顶点,我想用不同的颜色来填充红线内部和外部的区域。
表面上看,这似乎很容易:为集合中的顶点添加值1,而在外部的顶点则添加0,并根据插值后的值是大于还是小于0.5来进行不同的渲染。
然而,由于它是作为三角形带呈现的,所以这种方法并不完全奏效。实际上,由于这是作为三角形带呈现的,结果看起来像这样: 所以,一半的边缘是有效的,而另一半会形成丑陋的方形楼梯。
我已经试图思考几天是否有一些技巧可以用来不同地生成顶点值或进行更复杂的测试,以便更接近预期的形状,而不放弃漂亮而简单的三角形条带,并且不需要提前生成几何图形,但我想不到任何一个。
有人遇到过类似的问题吗?有没有一些聪明的解决方案我错过了?
我正在使用Metal进行此操作,但我不认为这取决于使用的具体API。
然而,现在我发现自己还需要在这个网格上实现边框线。显然,这里的解决方案将类似于 marching squares。基本上,我想要实现的是这样的: 黑点代表网格中属于某个集合的顶点,我想用不同的颜色来填充红线内部和外部的区域。
表面上看,这似乎很容易:为集合中的顶点添加值1,而在外部的顶点则添加0,并根据插值后的值是大于还是小于0.5来进行不同的渲染。
然而,由于它是作为三角形带呈现的,所以这种方法并不完全奏效。实际上,由于这是作为三角形带呈现的,结果看起来像这样: 所以,一半的边缘是有效的,而另一半会形成丑陋的方形楼梯。
我已经试图思考几天是否有一些技巧可以用来不同地生成顶点值或进行更复杂的测试,以便更接近预期的形状,而不放弃漂亮而简单的三角形条带,并且不需要提前生成几何图形,但我想不到任何一个。
有人遇到过类似的问题吗?有没有一些聪明的解决方案我错过了?
我正在使用Metal进行此操作,但我不认为这取决于使用的具体API。