【发布时间】:2016-10-07 06:44:04
【问题描述】:
我试图在保持可调整大小的同时找到鼠标在画布“网格”上的位置。我目前有鼠标在屏幕上的坐标(x 和 y)。
问题是,WebGL(我用来在画布上绘制)和鼠标坐标之间的“缩放”是不同的。 WebGL 认为从原点向右 10 个单位实际上被认为是从原点开始的 x 个单位(不同的屏幕分辨率会改变这一点)。这意味着当我的鼠标在 WebGL 认为的 (10, 10) 上时,我的鼠标坐标是 (100, 100)。
如何将屏幕上的鼠标坐标转换为用于定义点的“WebGL 坐标”?
这类似于this question,但我想不使用 Fabric.js。
【问题讨论】:
-
添加了 webgl 标签参考。厘米
-
默认的 NDC 空间(没有任何变换)是屏幕左侧的 x=-1,右侧的 x=+1; y=-1 在底部,y=+1 在屏幕顶部。
-
我的问题是如何将视口中的光标坐标转换为它在 NDC 空间中覆盖的坐标
-
见this。
-
或者只使用基本数学:
mx = (mouseEvent.offsetX / canvas.clientWidth)*2-1与 y 相同,使用offsetY和clientHeight
标签: javascript html canvas webgl