关于CEGUI渲染状态的恢复

        CEGUI在渲染完了之后,会更改DX的渲染状态,但是并不会恢复过来,于是如果此时再用DX渲染的话,就会出现混乱了,网上看了很多,但是写的都不对,这里是经本人测试切实可用的代码,其中CEGUI 版本为0.7.1

	// Revert RenderState 
	m_pDirect3DDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
	m_pDirect3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
	m_pDirect3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
	m_pDirect3DDevice->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
	m_pDirect3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);

	m_pDirect3DDevice->SetTextureStageState( 0 , D3DTSS_COLORARG1, D3DTA_TEXTURE );
	m_pDirect3DDevice->SetTextureStageState( 0 , D3DTSS_COLORARG2, D3DTA_DIFFUSE );
	m_pDirect3DDevice->SetTextureStageState( 0 , D3DTSS_COLOROP, D3DTOP_SELECTARG1 );

       在用DX进行渲染之前执行下之前的代码,就可以用了,如果还不行的话可以参考CEGUIDirect3D9Renderer.cpp里头的 beginRendering() 这个函数,CEGUI更改过的所有的渲染状态都在这里了,呵呵。

关于CEGUI渲染状态的恢复》上有2条评论

  1. 你好,我看了你博客里面的一些文章,收益匪浅。我是刚刚接触CEGUI的,希望能够想你学习下,我QQ是340625992,希望你能不吝赐教。

发表评论

电子邮件地址不会被公开。