如何在 OpenGL 中以像素为单位指定顶点?
Posted
技术标签:
【中文标题】如何在 OpenGL 中以像素为单位指定顶点?【英文标题】:How can I specify vertices in pixels in OpenGL? 【发布时间】:2013-12-30 01:23:28 【问题描述】:我想用OpenGL C++写一个小项目,我想用像素代替浮点值,比如这样:
glVertext2f(420, 300);
代替:
glVertex2f(0.4, -0.34);
有可能吗?
【问题讨论】:
您可以设置投影矩阵,以便顶点坐标与屏幕上的像素匹配,而不是将值转换为“浮点”。 【参考方案1】:如果您想使用像素坐标进行渲染,使用正交矩阵非常容易,您可以使用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++ 都应该进行隐式转换。即glVertext2f(420, 300);
【讨论】:
以上是关于如何在 OpenGL 中以像素为单位指定顶点?的主要内容,如果未能解决你的问题,请参考以下文章