存储渲染图层

时间:2012-07-20 10:40:33

标签: opengl opentk

我正在使用OpenTK(用于.NET的OpenGL包装器)来绘制2D对象 一般来说,我正在绘制两个元素(由较小的对象组成)

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

在当前实现中,我必须每50ms调用Draw以使Element2保持最新状态。在这种情况下,我毫无意义地刷新了Element1 5次。

所以我需要一些方法来存储Element1的渲染状态,以加快我的绘图

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

1 个答案:

答案 0 :(得分:1)

您要做的是将“Element2”渲染到屏幕外的渲染目标,并每300ms刷新一次。每帧,只需将rendertarget映射为纹理并渲染四边形,使其与“Element1”正确混合

Here是一个很好的使用OpenTK进行屏幕外渲染的教程。

要记住的关键是,如果切换rendertargets的成本超过了渲染元素的成本,那么这甚至可能会减慢速度。但是如果“Element2”足够复杂/重,那么这种技术将会有很大的帮助。

希望这有帮助!