我有一个矩阵,可以在将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进行矩阵求逆,并且乘法只能将鼠标坐标向量乘以矩阵,而不是相反。谢谢。
答案 0 :(得分:0)
通过除以着色器中的屏幕空间而不是矩阵来解决