球体没有在opengl中显示

时间:2011-10-31 14:08:21

标签: opengl

这是我的显示方法:

void display()
{
    GLfloat sphere_vertices[3]={0.0,0.0,0.0};

    int theta,phi;
    float x,y,z;
    int off_set;
    off_set=5;

    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POINTS);

   for (theta=-90; theta<=90-off_set; theta+=off_set) {
      for (phi=0; phi<=360-off_set; phi+=off_set) 
        {
            //calculate X of sphere 
            x= cos(theta + off_set) * sin(phi + off_set);
            //calculate Y of sphere
            y = cos(theta + off_set) * cos(theta + off_set);
            //calculate Z of sphere 
            z = sin(theta + off_set);
            //store vertices
            sphere_vertices[0]=x;
            sphere_vertices[1]=y;
            sphere_vertices[2]=z;
            //plot new point            
            glVertex3fv(sphere_vertices);
            printf("X is %f, Y is %f, Z is %f",  x,y,z);
        }
    }
    glEnd();
    glFlush();

}

我正在计算球体表面上的点,然后绘制每个点。但我唯一得到的是屏幕左下角的一些像素

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试渲染半径为1.0的球体,其中包含大约180 / off_set个带有360 / off_set个点的圆形切片。你是怎么想出x,y和z的?

对于每个点,您可以在theta上的xy平面上构建单位长度向量,然后围绕z轴旋转phi并按比例缩放结果向​​量球体的半径。

在查看数学后,请确保已指定模型视图和投影矩阵,并注意如果使用标准cos / sin函数,则它们采用弧度,而不是度数。