2012-07-20 57 views
1

我使用OpenTK(用於.NET的OpenGL包裝)來繪製二維對象 一般來說我畫兩個元件(它由更小的物體的)商店呈現層

public void Draw() 
{ 
    DrawElement1(); // Element1 changes every 300ms 
    DrawElement2(); // Element2 changes every 50ms 
} 

在當前的實現中,我必須每隔50ms調用Draw以使Element2保持最新狀態。在這種情況下,我毫無意義地刷新了Element1 5次。

所以我需要一些方法來儲存,以便部件1的再現狀態,以加快我的畫

public void Draw() 
{ 
    if(needUpdateElement1) 
     DrawElement1(); 
    else 
     DrawRenderedElement1(); 
    DrawElement2(); 
} 

回答

1

你想要做的是使「元素2」到屏幕外渲染目標,並刷新每300毫秒。每幀,只需將rendertarget映射爲紋理並渲染四邊形,以便與「Element1」正確混合。

Here是使用OpenTK進行離屏渲染的很好教程。

關鍵要記住的是,如果切換rendertargets的成本超過渲染元素的成本,那麼這可能會減慢速度。但是,如果「Element2」足夠複雜/足夠重量,這項技術將有很大幫助。

希望這會有所幫助!

+0

謝謝,這真的有助於開始 – Stecya 2012-07-24 07:13:41