C++ 在OpenGL上绘制圆

C++ 在OpenGL上绘制圆,c++,opengl,drawing,geometry,orthographic,C++,Opengl,Drawing,Geometry,Orthographic,这个代码应该只是在窗口上画一个圆,但是这个圆没有显示出来。我正在使用函数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

这个代码应该只是在窗口上画一个圆,但是这个圆没有显示出来。我正在使用函数
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();
}
#包括
#包括
void init(void){
glClearColor(0.686,0.933,0.933,0.0);
glMatrixMode(GL_投影);
gluOrtho2D(0.0200.0,0.0150.0);
}
空心线段(空心){
浮动θ;
int-posX=400;
int-posY=400;
国际无线电=100;
glClear(GLU颜色缓冲位);
GL3F(0.0,0.4,0.2);
glBegin(GL_多边形);

对于(int i=0;i您已设置正交投影:

gluOrtho2D(0.0,200.0,0.0,150.0);
矩形内的几何体(由正交投影定义)投影到视口上。这意味着坐标形式为(0,0)到(200,150)的几何体在视口上可见。此区域外的几何体将被剪裁

但是圆心在(500500),半径是100,所以它不在剪切区域内

由于视口的大小为(800800),我再次建议将正射投影调整到视口。
见和

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

glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 800.0, 0.0, 800.0);

嗨,安娜!到目前为止你试过调试这个吗?@MaxvonHippel她必须调试GPU!公平点。但在这种情况下,调试可能意味着尝试不同的GPU,以排除个别硬件特性的可能性,对吗?