如何在 OpenGL 中以像素为单位指定顶点



我想用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 转换为浮点数。 C 和 C++ 都应该进行隐式转换。即 glVertext2f(420, 300);

相关内容

  • 没有找到相关文章

最新更新