2011-06-23 48 views
0

我正在開發一個使用C++和Open GL的類似油漆的應用程序。但是每次我畫圓圈,線條等物體時,他們都不會**留在頁面上。通過這個,我的意思是說,我畫的每個新物體都被放置在一個空白頁面上。我如何讓我的繪製對象堅持下去?在Open GL中靜態繪圖

+0

您正在開發什麼平臺以及您使用哪些工具(IDE/SDK)。 – Perception

+0

什麼是頁面對象/ api?你的繪圖代碼是什麼? – whooops

回答

3

OpenGL沒有幾何持久性。基本上它是鉛筆,畫筆和油漆,你可以在畫布上畫畫,叫做「framebuffer」。所以在你繪製一些東西並清除幀緩衝之後,它不會以某種神奇的方式重新出現。

解決辦法有兩個:

  • 你把所有繪圖操作的列表,並在每次重繪你重繪一切從該列表。

  • 在繪製東西之後,將framebuffer中的圖像複製到紋理,而不是glClear,使用該紋理填充背景。

兩種技術都可以結合使用。

1

只是不清除framebuffer和你畫的任何東西都會留在屏幕上。這是我用來允許用戶在我的OpenGL模型上繪製的相同方法。這隻適用於標記圖像,因爲通過使用此方法,您不能抹去所繪製的內容,除非您的擦除方法是使用背景顏色進行繪製。

+0

這對doublebuffering不起作用。 –

+0

不,這不適用於doublebuffering。我主要在iPhone/iPad上工作,這不是問題。 – Davido

+0

我在linux下使用opengl與C++ – afom