我已经阅读了很多关于对象拾取的信息。现在我决定采用简单的颜色选择技术。我知道如何实现单个对象拾取(绘制一个帧并使用glReadPixel
测试像素颜色)。
现在我无法弄清楚用盒子挑选应该如何工作。想要记住按下鼠标的位置和释放位置的坐标以及从盒子和文本像素颜色中取出每个坐标之后看起来有意义的想法。但是,我应该如何处理情况,例如,我的盒子里面有一百万个尺寸为20x20的盒子内的物体?
是否会读取所有对象ID,或者可能会遗漏某些对象?我一切都应该没问题,是否有人能为盒子选择提供安静的代码?
答案 0 :(得分:0)
采摘的颜色编码对象有一堆缺点。猜猜你正面对其中一个。
理想情况下,在一个20 * 20的盒子中,你应该能够选择不超过400个物体,而且考虑到每个物体只有一个像素。
如果你拥有数百万个物体,那么光线跟踪或Ray-Box交叉是一种更精确的方法。但是,它肯定比Color编码更复杂。除非你做出更简单的近似,否则复杂对象会变得更复杂。或者,您可以使用同样准确且易于使用的选择缓冲区,因为它本身由OpenGL支持。它确实有一个开销和额外的绘制调用。但你真的不能错过这个。