我正在寻找一种方法来绘制一个基本上充当地平线的圆的轮廓。我不想填充圆圈,而是只有一条白线,即使你从侧面看它也可以看到,因为它平放..这可能吗?有人可以给我看一个教程或告诉我怎么做?
答案 0 :(得分:8)
有一种比SteveL发布的更有效的方式。
您可以根据当前点,切线向量和余弦向量找到圆上的下一个点,而不是计算每个点的触发函数(计算量很大的方法)。 trig函数计算一次,然后每个后续点都是一系列乘法,速度要快得多。
此页面提供了一个非常明确的OpenGL流程步骤,但您可以轻松应用Steve的答案,使其在OpenGL ES中运行:
答案 1 :(得分:3)
我认为如果你使用gl.glLineWidth(20);(或其他尺寸),线的thik也会增加(可能我错了但值得尝试)
获取圆圈的错误:
float[] verts=MakeCircle2d(1,100,0,0)
public static float[] MakeCircle2d(float rad,int points,float x,float y)//x,y ofsets
{
float[] verts=new float[points*2+2];
boolean first=true;
float fx=0;
float fy=0;
int c=0;
for (int i = 0; i < points; i++)
{
float fi = 2*Trig.PI*i/points;
float xa = rad*Trig.sin(fi + Trig.PI)+x ;
float ya = rad*Trig.cos(fi + Trig.PI)+y ;
if(first)
{
first=false;
fx=xa;
fy=ya;
}
verts[c]=xa;
verts[c+1]=ya;
c+=2;
}
verts[c]=fx;
verts[c+1]=fy;
return verts;
}
如果你想要一个空圆圈,请将其绘制为GL10.GL_LINES
gl.glDrawArrays(GL10.GL_LINES, 0, verts.length / 2);
如果您想要填充
,请将其绘制为GL10.GL_TRIANGLE_FAN gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, verts.length / 2);