我是 OpenGL 新手,我正在尝试学习基础知识。有什么线索为什么这段代码不画两条线吗?
void renderScene(void) {
glMatrixMode(GL_PROJECTION);
glOrtho(0.0, 1000, 0.0, 1000, 0, 0);
glClearColor(0,0,0.5,0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,1,1);
glBegin(GL_LINES);
glVertex2i(10, 70);
glVertex2i(900, 70);
glVertex2i(500, 700);
glVertex2i(500, 10);
glEnd();
glutSwapBuffers();
glFlush();
}
glOrtho
并不是简单地设置一个矩阵,而是将当前矩阵乘以新的正交投影矩阵。由于OpenGL是一个状态引擎,矩阵是跨帧保存的,所以矩阵是逐渐改变的。您必须先加载单位矩阵,然后才能使用 glLoadIdentity
: 定义投影矩阵
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1000, 0.0, 1000, 0, 0);