0

我想用 OpenGL C++ 编写一个小项目,我想使用像素而不是浮点值,例如:

glVertext2f(420, 300);

代替:

glVertex2f(0.4, -0.34);

是否可以?

4

1 回答 1

3

如果您想使用像素坐标进行渲染,使用正交矩阵很容易做到这一点,您可以使用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);

于 2013-12-30T01:41:17.693 回答