GPU鼠标拾取OpenGL/WebGL

GPU mouse picking OpenGL/WebGL

我知道我只需要渲染鼠标所在屏幕的 1x1 或 3x3 像素部分,对象 ID 作为颜色,然后从颜色中获取 ID。

我已经用球体实现了光线投射拾取,我猜它与使相机朝向鼠标光线的方向有关?

如何渲染正确的几个像素?

编辑:

在鼠标光线的方向设置相机是可行的,但是如果我将视口缩小图片比例但(我认为)我需要的是裁剪而不是缩放。我将如何实现这一目标?

最简单的解决方案是使用剪刀测试。它允许您仅渲染 window.

的指定矩形子区域内的像素。

例如,要将渲染限制为以像素 (x, y) 为中心的 3x3 像素:

glScissor(x - 1, y - 1, 3, 3);
glEnable(GL_SCISSOR_TEST);
glDraw...(...);
glDisable(GL_SCISSOR_TEST);

请注意,坐标系的原点位于 window 的左下角,而大多数 window 系统会在原点位于顶部的坐标系中为您提供鼠标坐标左边。如果您的系统是这种情况,则必须通过从 windowHeight - 1.

中减去 y 坐标来反转它