我尝试用opengl es 2.0实现一个坐标拾取功能。
我无法实现我在桌面版本中实现的两个版本。
版本1将以唯一的颜色呈现每个三角形,该颜色表示三角形的索引,而不是使用光线投射计算坐标。此版本不起作用,因为在opengl es glsl version 1.0中没有变量gl_primitiveid,也不可能按位移位。
版本2将坐标渲染为浮点纹理的值,但在OpenGL ES 2.0中浮点纹理不可用。
有人知道我能实现什么吗?我不想每一个三角形都用光线投射,因为它没有那么好表现。
谢谢你的帮助和任何想法。
最佳答案
另一种实现坐标拾取的方法是物体的光线拾取。它被认为是从二维屏幕坐标中提取三维物体的最佳方法。不必使用对象的唯一颜色渲染场景,也不必拾取颜色来确定相交。
在本教程的帮助下,我实现了三维对象的拾取:
http://android-raypick.blogspot.com/2012/04/first-i-want-to-state-this-is-my-first.html
在对算法进行了一些优化之后(我在博客文章中发表了评论),性能在我的情况下不是问题。为了测试性能,我选择了一个有3000多个三角形的三维模型,而且速度很快。在实际情况下,对于碰撞检测,可以使用具有非常简化的几何图形的模型。
关于android - 使用OpenGL ES 2.0进行坐标拾取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13507702/