我使用Arrays在OpenGl中创建了一个rectangel。 这是阵列:
float[] vertices = {
-0.5f, 0.5f, 0f,
-0.5f, -0.5f, 0f,
0.5f, -0.5f, 0f,
0.5f, 0.5f, 0f,
};
int[] indcies = {
0,1,3,
3,1,2
};
float[] texture_Coord ={
0,0,
0,1,
1,1,
1,0
};
我应该如何修改我的阵列以创建一个简单的圆圈,你可以帮忙吗?
答案 0 :(得分:0)
这更难,因为虽然在Open GL中只有一种明智的方式来表示矩形,但是有很多种方法可以表示圆形。更高级别的代码使用Bezier表示,然后仅在最后一步光栅化Bezier,这是正常的高端方式。或者,您可以创建N个边的多边形,其中N被选择为在视觉上与圆不可区分。然而,这对缩放来说并不健壮。或者,您可以调用圆绘制算法并将像素转换为点链。这将为你提供一个像素完美的圆圈,但如果你改造它也不会是像素完美的。
答案 1 :(得分:0)
你可以使用圆的参数方程:(x,y,z)=(r cos(t)+ x0,r sin(t)+ y0,0)其中t个样本形式0到2Pi,r是半径,x0和y0指定圆的中心。如果您对圆圈加中心进行n次采样,则会有n + 1个顶点。如果要对圆进行三角测量,可以按0,i,i + 1等顺序将所有顶点连接到中心。如果您只想使用线条渲染边界,则不需要中心,您可以将顶点放到第(i + 1)个顶点。下面是一个代码,您可能会发现对圆形和顶点进行采样非常有用,因为索引取决于您可能想要创建不同数组的渲染类型:
for(float t=0;t<2*Math.Pi;i+=0.1)
{
vertices[i]=r*Math.Cos(t)+x0;
vertices[i+1]=r*Math.Sin(t)+y0;
vertices[i+2]=0;
}