我通过glm :: ortho函数生成变换矩阵 我希望原点在中间,[编辑] x轴向右,y要向上。[/编辑]
在绘制内容时效果很好,但每当我从Window获取鼠标输入时,(0,0)位于左上角。
处理这种转变的一般方法是什么?
我现在正在使用非常特别和黑客的方式。
y= sizey-y;
x-=sizex/2;
y-=sizey/2;
答案 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 |
您可以将输入坐标乘以该矩阵来对其进行变换,但您在问题中的原始内容要简单得多。