c++ - 如何检查鼠标是否在OpenGL中屏幕的一侧?
问题描述
在opengl中,我如何能够检查鼠标指针是否在对象内。到目前为止,我只能检查它是否在屏幕内,使用glutPassiveMotionFunc
.
解决方案
我猜您想检索鼠标下或单击的像素下的对象。有一种方法称为 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
推荐阅读
- snmp - cisco SNMPV3 只连接到远程主机
- jhipster - org.hibernate.AnnotationException: Unknown mappedBy - Jhipster onetoone 关系
- java - java机器人转向圈转向不足
- python - pandas groupby 一连串数字
- c++ - '
': 无法从 'cmdline_error' 转换为 'boost::system::system_error' - c# - 有没有办法从 WPF 中的 ViewModel 关闭用户控件
- ios - fastlane match 不能再创建配置文件
- java - 在 java 中使用 toString() 形成 Object 类
- android - 当前的 Android 设备管理 API 和辅助功能 API Play 商店限制
- listview - 如何制作可扩展卡?