如果我想在OpenGL中绘制一个平面,我会做类似下面的事情:
glBegin(GL_POLYGON);
glColor3f(1.0, 1.0, 1.0);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glEnd();
这会绘制一个覆盖画布50%的白色平面(两个轴上从-0.5到0.5)。但是,我想用数字代替。我不想使用-1到1,而是使用0到n之类的东西,其中n是我画布的维度。对于上面的示例,在1000像素画布上的两个轴上比250到750,而不是-0.5到0.5。
答案 0 :(得分:3)
转换矩阵的用途是什么。在您的情况下,您可以根据需要设置具有限制的正投影矩阵。在您的示例中
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 1000, 0, 1000, -1, 1);
将设置一个查看体积,使左下角的边界为0,0,右上角为1000,1000。
请注意,这(以及您提供的代码)使用旧的,已弃用的固定功能管道。你应该放弃使用基于着色器的方法。