我在读,却不明白。
我正在看一个二维图形的大小调整代码,不明白为什么有些索引是正的,有些索引是负的。这幅画应该是平的,所以我不知道它是不是在做应该做的事:
void reshape(int width, int height)
{
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
//left, right, bottom, top, nearval, farval
glMatrixMode(GL_MODELVIEW);
}
最佳答案
它在构造投影矩阵。glOrtho
将当前矩阵乘以该函数指定的正交投影矩阵,该矩阵是由于前一个语句而产生的恒等式矩阵。
具体地说,这个对glOrtho
的调用正在构造一个矩阵,该矩阵将把世界坐标(-1,-1,-1)放在屏幕的左下角,把世界坐标(1,1,1)放在屏幕的右上角。如果你要画三角形:
glBegin(GL_TRIANGLES);
glVertex3f(-1, -1, 0);
glVertex3f(-1, 1, 0);
glVertex3f(1, -1, 0);
glEnd();
它可以覆盖屏幕的一半。
注意,如果您只使用2D,那么最后两个参数并不那么重要(尽管它们可以用于控制层)。只需使用z=0绘制所有内容,如果需要在其他内容前面放置内容,则使用更高的z值。