如何检查鼠标是否在OpenGl屏幕的一侧?

时间:2019-05-01 17:16:26

标签: c++ c glut

在opengl中,如何检查鼠标指针是否在对象内。到目前为止,我只能使用glutPassiveMotionFunc检查它是否在屏幕内。

1 个答案:

答案 0 :(得分:1)

我猜您想检索鼠标或单击的像素下方的对象。 有一种称为3d拾取的方法。它包括在专门为此目的创建的纹理上绘制场景。它必须与您的窗口具有相同的尺寸。 您将使用特殊的着色器绘制场景,该着色器将在纹理上绘制对象的ID。之后,您只需要读取鼠标要知道选择哪个对象的像素即可。

有我的片段着色器,它采用当前对象的ID:

#version 330 core

uniform uint id;

layout(location = 0) out uvec4 out_color;

void main()
{
    uvec4 color;
    color.x = (id & 0xff0000u) >> 16;
    color.y = (id & 0x00ff00u) >>  8;
    color.z = (id & 0x0000ffu) >>  0;
    color.w = uint(255);

    out_color = color;
    return;
}

您也可以查看本教程:http://ogldev.atspace.co.uk/www/tutorial29/tutorial29.html