GPU鼠标选择OpenGL / WebGL

时间:2015-01-06 14:23:45

标签: opengl webgl projection

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

我已经用球体实施了光线投射拾取,我猜它与使用相机在鼠标光线方向上看起来有关?

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

编辑:

设置相机在鼠标光线的方向工作,但如果我使视口更小,图片缩放,但我需要的是它被裁剪而不是缩放。我将如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用剪刀测试。它允许您仅渲染窗口的指定矩形子区域内的像素。

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

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

请注意,坐标系的原点位于窗口的左下角,而大多数窗口系统将在坐标系中为您提供鼠标坐标,该坐标系的原点位于左上角。如果您的系统出现这种情况,则必须通过从windowHeight - 1中减去y坐标来反转y坐标。