对OpenGL绘图形状使用值而不是-1 ... 1?

时间:2015-12-03 01:34:41

标签: c opengl glut

如果我想在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。

1 个答案:

答案 0 :(得分:3)

转换矩阵的用途是什么。在您的情况下,您可以根据需要设置具有限制的正投影矩阵。在您的示例中

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 1000, 0, 1000, -1, 1);

将设置一个查看体积,使左下角的边界为0,0,右上角为1000,1000。

请注意,这(以及您提供的代码)使用旧的,已弃用的固定功能管道。你应该放弃使用基于着色器的方法。