从window到opengl坐标系直观讲解
Posted
技术标签:
【中文标题】从window到opengl坐标系直观讲解【英文标题】:From window to opengl coordinate system intuitive explanation 【发布时间】:2014-11-06 21:30:26 【问题描述】:当使用鼠标功能时,我试图了解从窗口坐标轴(原点左上角)到OpenGL
坐标轴(原点左下角)的映射。在相关书籍中,这张地图由以下两行描述:
points[count].x = (float) x / (w/2) - 1.0;
points[count].y = (float) (h-y) / (h/2) - 1.0;
我怀疑这两条线描绘了一个比例。您能否对这张地图进行直观的数学解释?
【问题讨论】:
天使的书。 【参考方案1】:你指的是什么书? NDC 空间中的原点是视口的中心(0,0 是中心;-1,-1 是左下角;1, 1 是右上角)。任何其他坐标空间都由您的投影矩阵定义。
我相信这本书试图告诉你的是 NDC-1,-1 是你视口的左下角,而 NDC1,1 是右上角。
更完整的映射将包括视口的 X 和 Y 位置:
NDCX = (2.0 * (屏幕X - 视口X) / 视口W) - 1.0 ;
NDCY = (2.0 * (屏幕Y - 视口Y) / 视口H) - 1.0 ;
This mapping 如下图(右侧方块为视口):
您当然需要额外的步骤,因为 Y 轴在鼠标坐标系中的运行方向相反。这就是为什么您在映射中看到 Y 轴翻转的原因 h-y
【讨论】:
以上是关于从window到opengl坐标系直观讲解的主要内容,如果未能解决你的问题,请参考以下文章