如何在2D正投影中转换输入坐标?

时间:2014-05-17 20:34:24

标签: opengl matrix graphics glm-math

我通过glm :: ortho函数生成变换矩阵 我希望原点在中间,[编辑] x轴向右,y要向上。[/编辑]

在绘制内容时效果很好,但每当我从Window获取鼠标输入时,(0,0)位于左上角。

处理这种转变的一般方法是什么?
我现在正在使用非常特别和黑客的方式。

    y= sizey-y;
    x-=sizex/2;
    y-=sizey/2;

1 个答案:

答案 0 :(得分:2)

处理此问题的一般方法是:

Translate (-sizex/2, sizey/2, 0.0); // Y translation:  -sizey/2 + sizey = sizey/2
Scale     ( 1.0,        -1.0, 1.0);

这会生成以下矩阵:

|1.0  0.0 0.0 0.0|   |1.0 0.0 0.0 -sizex/2|     |1.0  0.0 0.0 -sizex/2|
|0.0 -1.0 0.0 0.0| * |0.0 1.0 0.0  sizey/2|  =  |0.0 -1.0 0.0 -sizey/2|
|0.0  0.0 1.0 0.0|   |0.0 0.0 1.0   0.0   |     |0.0  0.0 1.0    0.0  |
|0.0  0.0 0.0 1.0|   |0.0 0.0 0.0   1.0   |     |0.0  0.0 0.0    1.0  |

您可以将输入坐标乘以该矩阵来对其进行变换,但您在问题中的原始内容要简单得多。