Wes*_*Dec 4 opengl glsl opengl-3
我使用glDrawElements绘制三角形网格,并希望能够使用鼠标单击选择/选择三角形.三角形的网格可以非常大.
在固定功能OpenGL中,有可能使用GL_SELECT:http://content.gpwiki.org/index.php/OpenGL:Tutorials:Picking ..但是我只对使用OpenGL核心配置文件感兴趣.
另一种可能性是使用'颜色编码':
http://www.lighthouse3d.com/opengl/picking/index.php?color1
http://www.opengl.org/resources/faq/technical/selection.htm
..但据我所知,使用glDrawElements时无法指示每个三角形信息?
最后,我可以通过鼠标位置拍摄拾取光线来进行基于CPU的拾取,但这会非常慢,因为我想我必须转换CPU上的三角形,所以我更喜欢基于GPU的解决方案.
有没有人建议在OpenGL核心配置文件中使用glDrawElements时采摘的最佳方法是什么?
关于'颜色编码'方法,您可以使用gl_PrimitiveID使用适当的片段着色器填充颜色编码缓冲区,这基本上可以为您提供绘制三角形的索引.
关于基于CPU的拾取,您可以使用处理加速结构的现有库和光线网格交集,例如Bullet或Opcode.
您的"最佳"选项取决于您的使用案例,很难说清楚.