我有一個簡單的實體建模應用程序,我想在其中實現幾種「導航模式」,用戶可以通過三維空間導航相機的方式。其中之一是在SketchUp,Blender等中使用的無處不在的「拖動和平移/旋轉」。我也想要實現與我的特定應用程序更相關的內容。具體來說,我想實現一種模式,使相機漂浮在建模對象上方的「環形」上,並始終查看模型的中心;這樣,用戶可以很容易地在對象周圍「旋轉」,這是我的應用程序中的一種常見操作。將OpenGL渲染合併到一個視圖中
所以,我想要做的是在我的視圖中渲染建築物,並在視圖的右上方顯示一個圓環,在圓環上有一個小球體來表示相機的位置。環面中會有一個北向箭頭,用戶將通過拖動球體來拖動模型對象周圍的相機;移動球體將重新定位相機並重新繪製場景。
看起來我應該做的是以下幾點:渲染'主視圖',即建築物;然後將圓環和球體(具有不同的透視設置和光照)渲染到屏幕外的緩衝區,然後從那裏將其投射到我的主視圖。然後我就進入命中測試。我想檢測用戶是否點擊球體或環面;從我從OpenGL拾取中瞭解的內容(它似乎是一個很難的主題:/),所有拾取方法僅適用於在一個「場景」中進行選擇。除此之外,顯然,我仍然希望檢測建築模型中的「正常」採摘操作。
所以,我的問題:
- 如何呈現到屏幕外緩衝區和塊傳送到另一個OpenGL上下文(與阿爾法混合&透明像圓環的中心)?
- 如何在描述的場景中進行點擊測試?
謝謝,爲未來讀者的完整性,這裏的鏈接到你提到的帖子:http://stackoverflow.com/questions/829786/ways -to-implement-manipulation-handles-in-3d-view/830909#830909。我認爲這裏有足夠的重複,儘管我現在的想法是渲染一個3d環面:) – Roel 2009-05-07 10:17:53