圆圈不会出现在屏幕上

时间:2013-12-02 23:02:20

标签: c opengl

以下代码不显示屏幕上的圆圈,为什么不起作用? 我看不出任何错误。

void display(void){
    glClear(GL_COLOR_BUFFER_BIT);

    int circle_points=100;
    int i;
    double theta,cx=200, cy=300,r=100;

    int MyCircle(){
        glBegin(GL_LINE_LOOP);
        glColor3f(1.0,1.0,1.0); //preto
        for(i=0;i<circle_points;i++){
            theta=(2*pi*i)/circle_points;
            glVertex2f(cx+r*cos(theta),cy+r*sin(theta));
        }
        glEnd();
    }
    glFlush();
}

1 个答案:

答案 0 :(得分:3)

不知道你为什么要在函数内声明一个函数。我不太确定如何编译,更不用说了。

逻辑是合理的:

enter image description here

#include <GL/glut.h>
#include <math.h>

void MyCircle( void )
{
    const int circle_points=100;
    const float cx=0, cy=0, r=100;
    const float pi = 3.14159f;
    int i = 0;

    glBegin(GL_LINE_LOOP);
    glColor3f(1.0,1.0,1.0); //preto
    for(i=0;i<circle_points;i++)
    {
        const float theta=(2*pi*i)/circle_points;
        glVertex2f(cx+r*cos(theta),cy+r*sin(theta));
    }
    glEnd();
}

void display( void )
{
    const double w = glutGet( GLUT_WINDOW_WIDTH );
    const double h = glutGet( GLUT_WINDOW_HEIGHT );
    const double ar = w / h;

    glClear( GL_COLOR_BUFFER_BIT );

    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glOrtho( -150 * ar, 150 * ar, -150, 150, -1, 1 );

    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();

    MyCircle();

    glutSwapBuffers();
}

int main( int argc, char **argv )
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
    glutInitWindowSize( 640, 480 );
    glutCreateWindow( "GLUT" );
    glutDisplayFunc( display );
    glutMainLoop();
    return 0;
}