如何在OpenGL中高效地執行選擇?如何在OpenGL中使用框選擇高效選擇對象
我已閱讀此question,仍然有些事情對我而言仍然不確定。
在我的應用程序中,我想支持兩種選擇形式。首先用鼠標點擊,然後用pickbox選擇。我的應用程序還繼承了90年代和2000年初與OpenGL特別相關的一些糟糕的編程實踐,例如它使用GL_SELECT。
畢竟我的閱讀,我明白這可能是非常低效的。我已經學會了兩種方式來解決這個問題:
- 顏色採摘:獨特的顏色分配給在 場景中的每個對象。在1x1px的虛構窗口上渲染並閱讀顏色。
- 光線投射使用碰撞檢測
問題:
- 如何進行顏色挑選了一箱?我只是簡單地將場景渲染到與我的盒子大小相同的窗口中,並閱讀收集獨特顏色的像素矩陣以便適當選擇?
- 是光線投射的首選方法嗎?如果是這樣,那麼如何延長拾取盒?
- 除了這些常用的方法還有其他方法嗎?
除非你已經通過配置來驗證這是造成問題的原因(我敢打賭你沒有,事實上並非如此),請不要這麼做。在等待數百毫秒的鼠標輸入之後,快速找到對象一毫秒毫無意義。 –
是否要選擇選擇矩形內的所有對象或僅選擇不完全遮擋的對象?因爲如果你想選擇全部,那將排除顏色選擇。 –
@JerryCoffin我有幾十萬的場景,其中有不少物體。根據對象的複雜程度和對象的數量,可能需要一秒或更多時間才能用當前設置選擇對象。我不認爲這是整個過程的瓶頸,但我希望知道未來的選擇是什麼理想的選擇方法。 – pippin1289