我正在使用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();
}
答案 0 :(得分:1)
您要做的是将“Element2”渲染到屏幕外的渲染目标,并每300ms刷新一次。每帧,只需将rendertarget映射为纹理并渲染四边形,使其与“Element1”正确混合
Here是一个很好的使用OpenTK进行屏幕外渲染的教程。
要记住的关键是,如果切换rendertargets的成本超过了渲染元素的成本,那么这甚至可能会减慢速度。但是如果“Element2”足够复杂/重,那么这种技术将会有很大的帮助。
希望这有帮助!