C 绘图不';t在绘制球体时使用OpenGL

C 绘图不';t在绘制球体时使用OpenGL,c,opengl,C,Opengl,我是OpenGL的第一个,我想用3D图形视图绘制一个球体 第一步,我只想画一条带子,它包含一个球体。 但是没有结果,我所有的结果窗口都被清除为白色 我的代码有问题吗 这是我的密码: void init(); void display(); void drawPath(int pi, int theta); void drawQuad(int pi, int theta); int we = -80; // - 파이 int kyong = -180; // - 세타 int main(int

我是OpenGL的第一个,我想用3D图形视图绘制一个球体

第一步,我只想画一条带子,它包含一个球体。 但是没有结果,我所有的结果窗口都被清除为白色

我的代码有问题吗

这是我的密码:

void init();
void display();
void drawPath(int pi, int theta);
void drawQuad(int pi, int theta);

int we = -80; // - 파이
int kyong = -180; // - 세타

int main(int argc, const char * argv[]) {
    glutInit(&argc, (char**)argv);
    glutInitWindowSize(500, 500);
    glutCreateWindow("Prog09 - Goo");
    glutDisplayFunc(display);

    init();
    glutMainLoop();

    return 0;
}

void init(){
    glClearColor(1, 1, 1, 1);
    glOrtho(0, 50, 0, 50, -50, 50);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);
}
void display(){
    glColor3f(1.0, 1.0, 1.0);

    drawPath(0, 0);
}

void drawPath(int pi, int theta){
    drawQuad(pi, theta);
}

void drawQuad(pi, theta){
    int i;
    GLfloat x[4],y[4],z[4];

//    theta = (theta * 3.14)/180;
//    pi = (pi * 3.14)/180;

    x[0] = sin(theta)*cos(pi);
    y[0] = cos(theta)*sin(pi);
    z[0] = sin(pi);

    x[1] = sin(theta)*cos(pi+20);
    y[1] = cos(theta)*sin(pi+20);
    z[1] = sin(pi+20);

    x[2] = sin(theta+20)*cos(pi+20);
    y[2] = cos(theta+20)*sin(pi+20);
    z[2] = sin(pi+20);

    x[3] = sin(theta+20)*cos(pi);
    y[3] = cos(theta+20)*sin(pi);
    z[3] = sin(pi);


    for (i = 0; i < 4; i++) {
        glBegin(GL_POLYGON);
        glVertex3f(x[i]*10, y[i]*10, z[i]*10);
        glEnd();

    }
    glFlush();

    for (i = 0; i < 4; i++) {
        printf("%d. %f %f %f\n",i+1, x[i], y[i], z[i]);
    }
    printf("WHY?\n");
}
void init();
void display();
无效绘制路径(int-pi,int-theta);
void drawQuad(int-pi,int-theta);
int we=-80;//-파이
int kyong=-180;//-세타
int main(int argc,const char*argv[]{
glutInit(&argc,(char**)argv);
glutInitWindowSize(500500);
glutCreateWindow(“Prog09-Goo”);
glutDisplayFunc(显示器);
init();
glutMainLoop();
返回0;
}
void init(){
glClearColor(1,1,1,1);
格洛托(0,50,0,50,-50,50);
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glEnable(GLU深度试验);
}
无效显示(){
GL3F(1.0,1.0,1.0);
绘制路径(0,0);
}
无效绘制路径(整数π,整数θ){
drawQuad(π,θ);
}
void drawQuad(π,θ){
int i;
glx[4],y[4],z[4];
//θ=(θ*3.14)/180;
//pi=(pi*3.14)/180;
x[0]=sin(θ)*cos(π);
y[0]=cos(θ)*sin(π);
z[0]=sin(pi);
x[1]=sin(θ)*cos(π+20);
y[1]=cos(θ)*sin(π+20);
z[1]=sin(pi+20);
x[2]=sin(θ+20)*cos(π+20);
y[2]=cos(θ+20)*sin(π+20);
z[2]=sin(π+20);
x[3]=sin(θ+20)*cos(π);
y[3]=cos(θ+20)*sin(π);
z[3]=sin(pi);
对于(i=0;i<4;i++){
glBegin(GL_多边形);
glVertex3f(x[i]*10,y[i]*10,z[i]*10);
格伦德();
}
glFlush();
对于(i=0;i<4;i++){
printf(“%d.%f%f%f\n”,i+1,x[i],y[i],z[i]);
}
printf(“为什么?\n”);
}
我知道这是一个基本问题,但我知道为什么我的代码不起作用。
感谢您的帮助。

您正在绘制多个多边形,如果每个多边形正好包含一个点:

for (i = 0; i < 4; i++) {
    glBegin(GL_POLYGON);
    glVertex3f(x[i]*10, y[i]*10, z[i]*10);
    glEnd();
}
(i=0;i<4;i++)的
{
glBegin(GL_多边形);
glVertex3f(x[i]*10,y[i]*10,z[i]*10);
格伦德();
}
如果要使用所有点绘制一个多边形,则必须执行以下操作:

glBegin(GL_POLYGON);
for (i = 0; i < 4; i++) {
    glVertex3f(x[i]*10, y[i]*10, z[i]*10);
}
glEnd();
glBegin(GL_多边形);
对于(i=0;i<4;i++){
glVertex3f(x[i]*10,y[i]*10,z[i]*10);
}
格伦德();

我不确定您试图在此处绘制球体的位置,因此您可能想问“…绘制四边形时”?!!谢谢你是我的代码保护程序!这是一个太愚蠢的问题XD再次感谢:)对不起,回复太晚了。标记为接受答案的时间还没有结束,所以我等了1分钟,只是忘了。T.T谢谢您的回答,祝您愉快:)