【问题标题】:Confused about GLSL vector matrix multiplication order对 GLSL 向量矩阵乘法顺序感到困惑
【发布时间】:2019-12-14 20:15:01
【问题描述】:

我有一个矩阵,当您将 vec2 插入其中时,它会为您提供屏幕坐标。 它产生如下结果:

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

但是有一个问题,如果分辨率不遵循 width=height*2 那么你会得到一个混乱的图像

切换着色器,以便在向量修复此问题后矩阵相乘,但现在光标不会与块对齐

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

    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 进行矩阵反转和乘法运算,它只允许我将鼠标坐标向量乘以矩阵,反之亦然。谢谢。

【问题讨论】:

    标签: matrix vector graphics webgl multiplication


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 2020-08-16
      相关资源
      最近更新 更多