繁体   English   中英

使用OpenGL ES 2.0协调挑选

[英]Coordinate Picking with OpenGL ES 2.0

我尝试使用OpenGL ES 2.0实现坐标选择功能。 我无法实现我在桌面版中实现的两个版本。

版本1是以独特的颜色渲染每个三角形,它代表三角形的索引,而不是用光线投影计算坐标。 此版本不起作用,因为在OpenGL ES GLSL版本1.0中没有变量GL_PrimitiveID,也不可能进行按位移位。

版本2是将坐标渲染为浮点纹理的值,但OpenGL ES 2.0中不提供浮点纹理。

还有人知道我能实施什么吗? 我不想对每个三角形进行光线投射,因为它不是那么高效。

感谢您的帮助和任何想法。

实现坐标拾取的另一种方法是对象的光线拾取。 它被认为是从2D屏幕坐标中选择3D对象的最佳方法。 您不必使用对象的唯一颜色渲染场景并选择颜色来确定交点。

我已经在这个很棒的教程的帮助下实现了3D对象的选择: http//android-raypick.blogspot.com/2012/04/first-i-want-to-state-this-is-my-first。 HTML

在对算法进行了一些优化之后(我在博客文章中发表了评论),在我的案例中,性能不是问题。 为了测试性能,我选择了一个具有3000多个三角形的3D模型,速度很快。 在实际情况下,对于碰撞检测,您可以使用具有非常简化几何的模型。

当使用光线投射时,无论如何都要对光线测试每个基元是个坏主意。 您应该构建模型的分层表示,如边界体积树并执行加速光线投射测试。 每当模型发生变化时,您都必须更新此树。

返回到为每个三角形渲染单独颜色的原始方法,似乎需要分配另一个顶点属性(颜色/索引),并且必须为每个三角形重复共享顶点。 顶点的数量将是3 *三角形的数量,但这将解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM