该代码应该仅在窗口上绘制一个圆,但该圆不会显示。我正在使用函数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();
}
答案 0 :(得分:3)
您已经设置了正交投影:
gluOrtho2D(0.0,200.0,0.0,150.0);
由正交投影定义的矩形内的几何图形投影在视口上。这意味着坐标在(0,0)到(200,150)之间的几何图形在视口上可见。裁剪了此区域之外的几何。
但是圆心在(500,500),半径为100。因此它不在剪切区域内。
由于视口的大小为(800,800),所以我建议将正交投影调整为适合视口。
参见gluOrtho2D
和glOrtho
。
更改正射投影以解决问题:
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 800.0, 0.0, 800.0);