此代码应该只是在窗口上绘制一个圆圈,但圆圈不会显示。我正在使用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();
}
您已设置正交投影:
gluOrtho2D(0.0,200.0,0.0,150.0);
由正交投影定义的矩形内的几何体投影在视口上。这意味着,在视口上可以看到坐标形式为(0,0)到(200,150)的几何体。该区域的几何体被剪裁。
但圆的中心位于(500,500),半径为100.因此它不在裁剪区域内。
由于视口的大小是(800,800),因此我需要调整正交投影到视口。 见qazxsw poi和qazxsw poi。
更改正交投影以解决问题:
gluOrtho2D