我正在用C++編寫一個程序,它通過UDP套接字獲取4維點數據,然後將數據繪製在6個獨立的2D散點圖中。例如,如果我們命名尺寸:A,B,C,D,那麼六個二維圖將是AxB,AxC,AxD,BxC,BxD和CxD。在幾個小時的過程中,該計劃累計達到50K點。使用OpenGL在C++中繪製大量數據點的散點圖的最佳方法
目前我使用即時模式繪製每個點一次。我不清除繪製調用之間的緩衝區,因此先前繪製的點會一直存在,直到緩衝區被清除。我對這種方法不滿意,因爲即時模式很慢並且不推薦使用。當我必須清除緩衝區時,如窗口重新調整大小時,我會丟失先前繪製的所有數據。我想提出一個解決方案,允許在清除緩衝區後保持數據持久性。此外,如果劇情可以很容易地與窗口重新調整大小一樣,那也不錯。
我想過爲每個座標系維護一個頂點數組(2維),但這需要6個獨立的數組,並且需要3次維持一個包含所有4維的數組的內存。
我以正確的方式思考這個問題嗎?什麼是適當的解決這個問題?
最終目標是讓應用程序儘可能接近實時地顯示數據。
編輯當它們進來時,是否可以繼續繪製點,當我需要調整屏幕大小時,抓住屏幕圖像,然後顯示該圖像的大小調整版本?
VBOs應該至少不會比客戶端陣列慢,並且肯定比立即模式更快。它不僅是內存拷貝,也是VBO(和一般頂點數組)所用的驅動程序調用開銷。 –
人們可能會逃避在'glVertexPointer'中使用不同的'stride'和'pointer'參數,而不必爲不同的視圖設置不同的頂點着色器。 – user786653
@Christian感謝您的評論,我不確定。 – neodelphi