关于一个2D UI引擎的效率提升问题
这个利用D3D实现的UI引擎是基于层的一个设计。一个窗口是一个层,而且这个窗口可以拥有子层,比如按钮,比如EditBox。在内部实现上一个层对应一个Texture,并且拥有父亲层和子层。如果一个子层的内容发生了变化,他首先做的就是把他的绘制内容重绘一遍(通过Sprite绘制图像和文字等),然后再把所有的2级子层的Texture绘制到自己身上,然后对父亲层逐级向上递归调用这个方法。直到最上面的root层(这里可以把所有层想象成一个树状结构),然后把root层的纹理通过Sprite绘制到D3D窗口。
这就导致一个小小的按钮控件的刷新会导致所有的父亲层重绘。尽管我加入了裁剪机制,效果还是不太理想,请各位帮忙想象有什么可以改进的。