1

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

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

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

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

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

1 回答 1

1

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

是一个使用 OpenTK 进行离屏渲染的好教程。

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

希望这可以帮助!

于 2012-07-20T16:22:15.943 回答