0
在我的项目中,我有一个绘制球体的要求(可能是半球体将会确定)。为此,我使用sin()和cos()方法来计算(x,y)坐标的角度。但是按照这种方法,我觉得它正在实现我的项目。任何人都可以帮助我绘制一个简单的gl函数的球体。OpenGL:使用gl函数绘制球体/圆圈的帮助
像下面我所定义的结构:
typedef struct
{
float x;
float y;
}Semi_Sphere;
Semi_Sphere Sky_SemiSphere[180000], Grnd_SemiSphere[180000];
在下面的方法创建一个数组来存储的(X,Y)坐标。这个方法我在我的main()函数中调用。
void createSemi_Sphere_Table (void)
{
float angle_d = 1.1f, angle_r=0.0;
float const Gl_Pi = 3.14;
int i = 0;
while (angle_d < 11.0)
{
angle_r = Gl_Pi/angle_d;
Sky_SemiSphere[i].y = 1.0f + (((3.50)*sin(angle_r)));
Sky_SemiSphere[i].x = ((3.7)*cos(angle_r)) - 0.52f;
angle_d = angle_d + 0.001;
i = i+1;
}
}
然后,我在下面的方法中使用那些(x,y)坐标绘制我的球体。我在drawScene()方法中调用drawSemi_Sphere_Grnd()方法。
void drawSemi_Sphere_Grnd (void)
{
int L_Index = 0;
glPushMatrix();
for (L_Index = 0; L_Index < 9750; L_Index++)
{
glBegin(GL_LINES);
glVertex2f(Grnd_SemiSphere[L_Index].x, Grnd_SemiSphere[L_Index].y);
glVertex2f(-1.0f, -2.1f);
glEnd();
}
glPopMatrix();
}
通过上述过程我得到球体。但是表现很慢。
感谢您的回复..你可以给我一些关于“缓冲区对象” – 2012-01-05 08:36:59