高兴,实现RenderToTexture。
先是看SDK的CubeMap实例,人家的实时镜面效果
原来才用了6张图,场景渲染了6+1遍 。
有些地方错误郁闷了好几天,终于实现RTT了。
再搞明白那6张图是咋贴的,就离镜面不远了。
贴几行关键代码:
IDirect3DTexture9* pRenderTexture;
//创建纹理。以前是D3DFMT_R8G8B8这个地方老是编译通过,运行出错,郁闷了我好半天。
Device->CreateTexture(640, 480, 1, D3DUSAGE_RENDERTARGET, D3DFMT_X8R8G8B8,
D3DPOOL_DEFAULT, &pRenderTexture, NULL);
//=======Render()=======
// Store the current render target
LPDIRECT3DSURFACE9 pBackBuffer = 0;
Device->GetRenderTarget(0, &pBackBuffer);
LPDIRECT3DSURFACE9 pRenderSurface = 0;
pRenderTexture->GetSurfaceLevel(0, &pRenderSurface);//建纹理并绑定一个surface
Device->SetRenderTarget(0,pRenderSurface);//渲染目标不是屏幕,surface存放纹理数据
SAFE_RELEASE(pRenderSurface);
Device->Clear(……);
Device->BeginScene();
//RenderScene
Device->EndScene();
// Restore render target
Device->SetRenderTarget(0, pBackBuffer);
SAFE_RELEASE(pBackBuffer);
//之后就可以用这个纹理了。
Device->Clear(……);
Device->BeginScene();
//RenderScene
Device->EndScene();
/Files/slowhand/RTT.rar