实际上我在我的项目功能中为指定最小半径和最大半径的绘制环生成顶点数据。在边缘情况下(最小半径等于0),它是带有实心填充的圆。要绘制我的数据,我正在使用GL_TRIANGLE_STRIP。
现在我希望重构我的函数,这样就可以准备数据来绘制虚线圆圈(类似于http://www.andyhorner.com/wp-content/uploads/2012/04/dashedlines-24.jpg)。
此外,我希望每个圈子只保留一个缓冲区,所以我想我必须切换到GL_TRIANGLES绘图。您有什么建议准备顶点数据来绘制这种形状的最佳方法吗?
答案 0 :(得分:1)
我会看到两种不同的绘制虚线圆的方法:
准备短划线的确切几何形状(我相信这就是您的想法)并使用纯色渲染此几何体。在这种情况下,顶点缓冲区仅包含位置属性。您可以使用单个三角形条或三角形。使用三角形条时,您必须重复一个破折号的最后一个顶点(的索引)和下一个破折号的第一个顶点的(索引)(这会插入简并三角形以伪造一个原始重启)。您可能想要评估顶点和索引缓冲区的大小,以决定单个三角形条带或三角形(通常是单个三角形条带获胜)。我还假设您正在使用索引几何(glDrawElements
+索引缓冲区)。
准备整圆的几何体,然后在其上应用半透明的1D纹理以渲染破折号。显然你可以继续使用一个三角形条。您不需要伪原始重启,但仍需要在虚线边界生成顶点。顶点缓冲区不仅包含位置属性,还包含相应的1D纹理坐标。当然,您需要在渲染时启用混合。
两种方法都使用单个绘制调用来渲染整个虚线圆。纹理方法更复杂,更慢。我会选择1.纯粹的几何方法,只有一个三角形条。