对GLSL向量矩阵乘法顺序感到困惑

时间:2019-12-14 20:15:01

标签: matrix vector graphics webgl multiplication

我有一个矩阵,可以在将vec2插入屏幕时为您提供屏幕坐标。 它产生如下结果: enter image description here

我可以反转矩阵,并插入鼠标坐标,并使用它来允许您使用光标放置块

enter image description here

但是有一个问题,如果分辨率不遵循width = height * 2,那么图像会混乱 enter image description here

切换着色器,以便在矢量修复后将矩阵相乘,但现在光标将不再与块对齐

enter image description here

以下是确定位置的着色器代码(以此顺序相乘会破坏光标,但会修复分辨率错误):

    gl_Position.xy=   a_position.xy  * u_pixelMatrix ;

这是我正在使用的矩阵

    26 * renderSettings.blockRotation[0]  / renderSettings.screenSize[0]*0.95
,26 * renderSettings.blockRotation[1] / renderSettings.screenSize[0]*0.95
,12 * renderSettings.blockRotation[2]  / renderSettings.screenSize[1]*0.95
,12* renderSettings.blockRotation[3]  / renderSettings.screenSize[1]*0.95;

这是我要提供给反转矩阵的鼠标位置的坐标

playerControls.mousePosition[0]/canvas.width-0.5,-playerControls.mousePosition[1]/canvas.height+0.5

我还使用gl-matrix进行矩阵求逆,并且乘法只能将鼠标坐标向量乘以矩阵,而不是相反。谢谢。

1 个答案:

答案 0 :(得分:0)

通过除以着色器中的屏幕空间而不是矩阵来解决

相关问题