|
|
发表于 2008-7-7 14:00:00
|
显示全部楼层
Re:关于多重纹理混合的问题
先创建一个可渲染的纹理
IDirect3DTexture9* pRT;
IDirect3DDevice9::CreateTexture( 512, 512, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &pRT, NULL );
// 参数依次是 纹理宽度/高度/层数(MipLevels),作用必须为 D3DUSAGE_RENDERTARGET,后面是纹理格式,如果要支持透明的话,后面必须是D3DPOOL_DEFAULT
渲染的时候
// 设置渲染目标到纹理
IDirect3DSurface9* pOldSurface;
IDirect3DDevice9::GetRenderTarget( 0, &pOldSurface );
IDirect3DSurface9* pRTSurface;
pRT->GetSurfaceLevel( 0, &pRTSurface );
IDirect3DDevice9::SetRenderTarget( 0, pRTSurface );
IDirect3DDevice9::Clear( .... );
IDirect3DDevice9::BeginScene();
// 这里渲染你需要渲染到纹理上的内容
.....
// 渲染结束,恢复
IDirect3DDevice9::EndScene();
IDirect3DDevice9::SetRenderTarget( 0, pOldSurface );
pOldSurface->Release();
pRTSurface->Release();
// 开始正常的渲染
IDirect3DDevice9::BeginScene();
IDirect3DDevice9::Clear( ... );
// 这里就可以用 pRT 作为纹理了,也就是你混合好的结果
IDirect3DDevice9::EndScene();
IDirect3DDevice9: resent( ... ); |
|