|
|
现在我的D3D程序的效率还不够好,在看了D3D优化的部分资料后,好多地方提到尽量减少渲染状态的切换(调用SetRenderState),但是我有一个疑问,假设有如下的程序段:
{
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
DrawA(...);
}
...// 这中间没有调用SetRenderState(D3DRS_DESTBLEND,...)了;
{
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
DrawB(...);
}
这样的情况到底D3D内部是否是算渲染状态的切换,或者它在SetRenderState的函数内部仅仅是做了一个if的判断,然后就返回了。假如不是这样的话那需要我自己去写一层判断是否设置的状态和当前状态相等的包装。虽然做起来比较简单但是还是想知道D3D内部是否是这样做的,当然相似还有SetTexture等。
望各位大侠高手帮忙解答,多谢了! |
|