#include <GL/glut.h>
void render(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(100,10,0);
glVertex3f(200,10,0);
glVertex3f(0,100,0);
glEnd();
glFlush();
}
void reshape(int w, int h)
{
glViewport(0,0,(GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,(GLdouble)w, 0.0, (GLdouble)h);
}
void main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(640,480);
glutCreateWindow("first gl");
glutDisplayFunc(render);
glutReshapeFunc(reshape);
glutMainLoop();
}
加入glutReshapeFunc();函数以后又如下变化:
1)坐标原点在左下角位置;
2)glVertex3f中的坐标不在是缩放的;
3)glViewPort调整像素矩阵与整个窗口重叠,glOrtho2D设置原点位置,以及单位化矩阵。不再缩放了。