在OpenGL上绘制圆圈

问题描述 投票:1回答:1

此代码应该只是在窗口上绘制一个圆圈,但圆圈不会显示。我正在使用glVertex2f功能。

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

void init(void) {
    glClearColor(0.686, 0.933, 0.933,0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,200.0,0.0,150.0);
}
void lineSegment(void) {
    float theta;
    int posX = 400;
    int posY = 400;
    int radio = 100;
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0,0.4,0.2);
    glBegin(GL_POLYGON);
    for(int i=0; i<360; i++){
        theta = i*3.1416/180;
        glVertex2f(posX + radio*cos(theta), posY + radio*sin(theta));
    }
    glEnd();
    glFlush();
}


int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(50,50);
    glutInitWindowSize(800,800);
    glutCreateWindow("Cerámica Ana");
    init();
    glutDisplayFunc(lineSegment);
    glutMainLoop();
}
c++ opengl drawing geometry orthographic
1个回答
3
投票

您已设置正交投影:

gluOrtho2D(0.0,200.0,0.0,150.0);

由正交投影定义的矩形内的几何体投影在视口上。这意味着,在视口上可以看到坐标形式为(0,0)到(200,150)的几何体。该区域的几何体被剪裁。

但圆的中心位于(500,500),半径为100.因此它不在裁剪区域内。

由于视口的大小是(800,800),因此我需要调整正交投影到视口。 见qazxsw poi和qazxsw poi。

更改正交投影以解决问题:

gluOrtho2D
© www.soinside.com 2019 - 2024. All rights reserved.