在opengl中,如何检查鼠标指针是否在对象内。到目前为止,我只能使用glutPassiveMotionFunc
检查它是否在屏幕内。
答案 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