我有一個C#.NET應用程序,我用它創建了一個自定義圖像顯示控件。每個圖像顯示代表自己的顯示上下文,並使用glDrawPixels繪製圖像(是的,我知道使用紋理會更好,我計劃在未來,但這個應用程序已經太長,我的時間有限)。在openGL中同時更新兩個顯示上下文
我現在試圖讓兩個圖像同時平移。也就是說,當一個圖像向下移動十個像素時,第二個圖像向下移動十個像素。像這樣:
imageOne.YPan -= 10;
imageTwo.YPan -= 10;
imageOne.Invalidate(); //This forces a redraw.
imageTwo.Invalidate(); //This forces a redraw.
好吧,所以這裏是我遇到的問題。只有其中一個圖像顯示正在重繪。如果我在兩次Invalidate調用之間放置一個暫停,並且使暫停持續時間至少爲110毫秒,則兩者都將重繪,但不會同時進行。所以看起來好像第二張圖片總是試圖趕上第一張。另外,110毫秒的停頓會減慢運動的速度。
我曾嘗試將每個圖像的更新和無效放置在其自己的線程中,但這並沒有幫助。
在繪圖的開始階段,我使適當的上下文是最新的,最後我調用了swapbuffers()。我嘗試在draw函數的末尾加入glFinish,但沒有任何變化。
難道是它的顯卡是問題嗎?我堅持使用只有openGL 1.4的集成GPU。
希望我已經提供了足夠的細節,可以找到我的問題的答案。