簡體   English   中英

圓圈未出現在屏幕上

[英]Circle doesn't appear on the screen

以下代碼未在屏幕上顯示圓圈,為什么不起作用? 我看不到任何錯誤。

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();
}

不知道為什么要嘗試在函數內部聲明一個函數。 我不太確定該如何編譯,更不用說運行了。

邏輯是合理的:

在此處輸入圖片說明

#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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM