在Java中渲染球体的“切片” - 效率

时间:2016-01-14 17:01:25

标签: java performance opengl rendering polygons

我正在尝试在java中渲染一个半球。但是,我想要渲染由2个角度定义的切片 - 方位角和高程。因为我正在定义一个切片,所以我不能(据我所知)使用任何内置的原语。如果方位角范围定义为0-360且仰角范围定义为0-70,则这将是一个半球形,顶部有一个倒置的锥形孔。

当在“圆锥”内渲染时,我选择以5度为增量的三角形。这意味着对于360度锥体,有73个不同的顶点(如果我正确地进行了数学计算:360/5度切片,锥体的原点或尖端与所有边共享,并且所有其他顶点由相邻的三角形切片共享)

我的问题:
将这些渲染为具有多个顶点的单个多边形或者每个只有3个顶点的许多三角形更有效。如果我做一个多边形,我仍然必须为每个三角形包括所有三个点,或者如果它是一个共享顶点,我只会包含它一次吗?对不起,我的图形渲染知识有限。也很抱歉这么冗长;我希望有人可能会在我的思考过程中发现一些错误的东西,这可能会以任何方式解决问题。

1 个答案:

答案 0 :(得分:1)

首先 - 使用Google查找算法以创建非原始的球体。

第二 - 在链的某处 - 将使用三角形。最有可能是底层库。但对你而言 - 这取决于你是否打算砍掉创建的地区。如果你不打算进一步细分这个区域,我会把它变成一个多边形。实际上,在考虑了一秒之后 - 你也可以随后将多边形分开。所以只需将其设为一个多边形。

我考虑了一些,并决定修改这个答案。有两种方法可以在openGL中创建多边形。您可以将其创建为三角形网格或轮廓多边形。因此,如果您要问"我应该使用三角形网格还是轮廓多边形"我会说使用三角形网格。分解三角形网格要比多边形轮廓容易得多,因为要打破网格,你所要做的就是停在其中一个点上,包括新对象中的最后两个点,然后继续沿着三角形网格。轮廓多边形要求您围绕多边形向左和向右移动,以找到发生中断的两个点。如果这很清楚。如果不这样说的话。

更新:下午12:05 制作多边形时,可以使用三角形网格或多边形轮廓。轮廓主要适用于2D,而三角形网格适用于2D和3D系统。如果你有任何类型的多边形都大于三个点,那么将它们全部放入一个数组中是个好主意。这允许您使用带有数组的内置例程,并简单地通过它来构建多边形。通过将所有内容放入数组中,您还可以更轻松地添加新点或删除点或调整点。您所做的只是更改数组条目,然后调用相同的例程再次绘制所有内容。 (这应该是对函数的单个调用。)