我想用 OpenGL C++ 编写一个小项目,我想使用像素而不是浮点值,例如:
glVertext2f(420, 300);
代替:
glVertex2f(0.4, -0.34);
是否可以?
我想用 OpenGL C++ 编写一个小项目,我想使用像素而不是浮点值,例如:
glVertext2f(420, 300);
代替:
glVertex2f(0.4, -0.34);
是否可以?
如果您想使用像素坐标进行渲染,使用正交矩阵很容易做到这一点,您可以使用glOrtho
. 假设您的窗口是 800x600,您可以使用以下代码:
// Set your projection matrix
glMatrixMode(GL_PROJECTION);
glOrtho(0, 800, 0, 600, -1, 1);
// Restore the default matrix mode
glMatrixMode(GL_MODELVIEW);
glOrtho
期望参数是“左、右、下、上”,所以这实际上会将原点放在左下方(大多数 OpenGL 坐标系的 Y 值会随着您向上移动而增加)。但是,您希望原点位于左上角,这在大多数基于像素的绘图系统中很常见,您需要颠倒底部和顶部参数。
这将允许您使用像素坐标而不是默认剪辑坐标调用 glVertex2f。请注意,您不必调用特殊函数即可将 int 转换为 float。C 和 C++ 都应该进行隐式转换。IEglVertext2f(420, 300);