首页 > 解决方案 > 如何检查鼠标是否在OpenGL中屏幕的一侧?

问题描述

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

标签: c++cglut

解决方案


我猜您想检索鼠标下或单击的像素下的对象。有一种方法称为 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


推荐阅读