高興,實現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