作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 OpenGL 绘制 map 。在读取 XML 文件并设置相应的缓冲区后,我正在绘制 map 。该 map 包含街道、高速公路和边界。我想要的是每当我触摸 map 时,特定图层的颜色应该改变。
我面临的问题是,每当我触摸屏幕时,我只是得到触摸点的屏幕像素。我想将此点转换为 OpenGL 坐标,以便我可以将此点与绘制的 map 匹配并突出显示所选点。
如何将这个点转换成OpenGL坐标?
最佳答案
您需要将屏幕点取消投影到 OpenGL 世界空间中:
vec3 UnProjectPoint( const vec3& Point, const max4& Projection, const mat4& ModelView )
{
vec4 R( Point, 1.0f );
R.x = 2.0f * R.x - 1.0f;
R.y = 2.0f * R.y - 1.0f;
R.y = -R.y;
R.z = 1.0f;
R = Projection.GetInversed() * R;
R = ModelView.GetInversed() * R;
return R.ToVec3();
}
关于android - 如何在 ogl 中获取触摸屏点的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510254/
我是一名优秀的程序员,十分优秀!