看下OGRE的代码 不是很明白为什么Ogre 设置渲染状态的时候要这样做
于是用PIX调试了一下. 大吃一惊,效率接近5倍 =..= 难怪PS的开发总监说需要自己来确认渲染状态了
贴一下OGRE的代码
HRESULT D3D9RenderSystem::__SetRenderState(D3DRENDERSTATETYPE state, DWORD value)
{
HRESULT hr;
DWORD oldVal;
if ( FAILED( hr = mpD3DDevice->GetRenderState(state, &oldVal) ) )
return hr;
if ( oldVal == value )
return D3D_OK;
else
return mpD3DDevice->SetRenderState(state, value);
}
我使用的是Grass这个demo