2013-10-01 34 views
3

我想渲染具有特定攝像機參數的場景,其中分辨率非常高(比如20,000 x 20,000像素),但實際上我只對圖像平面的640x480小部分感興趣。在OpenGL中渲染裁剪後的圖像

我不一定只想放大該部分並改變相機指向的位置。我想讓相機保持指向相同的方向,我只想渲染一小部分場景。

我附上一張照片,試圖證明什麼,我講:如何我可以設置使用OpenGL的攝像頭矩陣呼籲妥善這樣的事情 Uploaded image

任何提示?

+0

我非常懷疑你會發現一個OpenGL實現能夠渲染成20000×200幀緩衝區(你可能需要將渲染任務拆分成瓷磚來完成這個任務)。但是你可能會考慮的一件事就是所謂的剪刀盒,它允許你將光柵化裁剪到視口的一個子矩形中。與修改實際的視口映射不同,這不會修改您的投影特性。有關更多詳細信息,請參閱:「glScissor(...)」。 –

+0

但是,這是一個光柵操作,因此設置剪刀矩形不會幫助您在原始裝配期間剪切幾何圖形。您可能需要爲此實現額外的裁剪邏輯。 –

+0

我不一定需要20,000x20,000幀緩衝區,我只想保留原始相機,但只渲染該圖像平面的一小部分。到目前爲止,我所看到的將涉及修改實際相機以查看該位置。即使我使用剪刀盒,這又能如何幫助我解決這個事實:我仍然需要巨大的幀緩衝來保存我感興趣的區域的細節水平? –

回答

1

我認爲libtr會做你想做的。

+0

很酷,我會試試看,謝謝! –

2

您只需要選擇不同的投影矩陣。爲glFrustum老參考頁描述瞭如何創建這樣一個矩陣:

projection matrix

的左,右,上,下的參數指定圓臺的邊緣(如圖所示在畫面中)。製作一個「正常」的投影矩陣,左=右,頂=底。將它們設置爲不同的值可以限制視圖。例如,如果在保持右側和底部不變的情況下設置left = 0和top = 0,則會在圖片中顯示與紅色區域相似的投影。

如果你計算出你當前使用的值,應該很簡單地調整它們以產生你想要的結果。

+0

很酷,我實際上正在考慮走這條路,只是不太清楚如何開始,感謝您的幫助! –