OpenGL - gluOrtho2d 和 glLoadIdentity?
Posted
技术标签:
【中文标题】OpenGL - gluOrtho2d 和 glLoadIdentity?【英文标题】:OpenGL - gluOrtho2d and glLoadIdentity? 【发布时间】:2015-01-29 02:55:29 【问题描述】:我开始使用 OpenGL。我不确定gluOrtho2d
和glLoadIdentity
如何一起发挥作用。特别是,我有以下代码,它应该在 10x10 显示器的中心绘制一个 2x2 正方形。
int main()
glutCreateWindow("Draw A Square");
glutDisplayFunc(mydisplay);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-5.0, 5.0, -5.0, 5.0);
glutMainLoop();
void mydisplay()
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
drawAUnitSquare();
glFlush();
void drawAUnitSquare()
// glLoadIdentity();
glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0);
glVertex2f(-1, -1);
glVertex2f(1, -1);
glVertex2f(1, 1);
glVertex2f(-1, 1);
glEnd();
上面的代码有效。但是,如果我取消注释 drawAUnitSquare()
中的 glLoadIdentity();
,则该正方形会填充整个视口。这里发生了什么?
【问题讨论】:
强制性注释 - 您正在使用即时模式,该模式已被弃用很长时间。开始可能会更容易一些,但最终你将不得不放弃它并开始学习现代 OpenGL,所以你不妨现在就开始学习。 【参考方案1】:您忘记将矩阵模式切换回GL_MODELVIEW
。
只需在gluOrtho2D(-5.0, 5.0, -5.0, 5.0);
之后添加glMatrixMode(GL_MODELVIEW);
。
【讨论】:
以上是关于OpenGL - gluOrtho2d 和 glLoadIdentity?的主要内容,如果未能解决你的问题,请参考以下文章
Qt5中使用opengl时出现链接错误,关于gluOrtho2D