对 OpenGL 绘图形状使用值而不是 -1...1?
Use values instead of -1...1 for OpenGL drawing shapes?
如果我想在 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();
这会绘制一个白色平面,覆盖 canvas 的 50%(两个轴上从 -0.5 到 0.5)。但是,我想改用数字。我不想使用 -1 到 1,而是使用 0 到 n 之类的东西,其中 n 是我的 canvas 的维度。对于上面的示例,1000 像素的两个轴上的 250 到 750 canvas 而不是 -0.5 到 0.5。
这就是变换矩阵的用途。在您的情况下,您可以根据需要设置具有限制的正射投影矩阵。在您的示例中
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 1000, 0, 1000, -1, 1);
将设置一个查看体积,使左下角的边界为 0,0,右上角的边界为 1000,1000。
请注意,这(以及您提供的代码)使用旧的、已弃用的固定功能管道。您应该放弃它,转而采用基于着色器的方法。
如果我想在 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();
这会绘制一个白色平面,覆盖 canvas 的 50%(两个轴上从 -0.5 到 0.5)。但是,我想改用数字。我不想使用 -1 到 1,而是使用 0 到 n 之类的东西,其中 n 是我的 canvas 的维度。对于上面的示例,1000 像素的两个轴上的 250 到 750 canvas 而不是 -0.5 到 0.5。
这就是变换矩阵的用途。在您的情况下,您可以根据需要设置具有限制的正射投影矩阵。在您的示例中
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 1000, 0, 1000, -1, 1);
将设置一个查看体积,使左下角的边界为 0,0,右上角的边界为 1000,1000。
请注意,这(以及您提供的代码)使用旧的、已弃用的固定功能管道。您应该放弃它,转而采用基于着色器的方法。