Render To Texture
主讲人:飞鸽
时间:2010-9-19
RenderTo Texture,即渲染到纹理,简称RTT。
1、 定义一些变量
LPDIRECT3DTEXTURE9 pRenderTexture =NULL; //要渲染到的那张纹理
LPDIRECT3DSURFACE9 pRenderSurface = NULL; //纹理的渲染对象
2、 创建空的纹理
pd3dDevice->CreateTexture(…,pRenderTexture, …);
其中的DWORD Usage参数一定要是D3DUSAGE_RENDERTARGET,而且D3DPOOL Pool也必须为D3D_DEFAULT
3、 获得pRenderTexture的纹理表面,因为渲染到纹理其实就是渲染到纹理的表面
pRenderTexture->GetSurfaceLevel( 0,&pRenderSurface );
4、 开始执行渲染到纹理(表面)的步骤
pd3dDevice->SetRenderTarget( 0,pRenderSurface ); //设定渲染表面为纹理表面
pd3dDevice->Clear( D3DCLEAR_TARGET |D3DCLEAR_ZBUFFER );
pd3dDevice->BeginScene();
//填写渲染的代码
pd3dDevice->EndScene();
这样就得到了一张包含数据的纹理对象,它的内容就是在上一步中渲染出来的效果,就是窗口的那张图片。然后用那张纹理贴到别的物体上面了。
注意:
在执行RTT之前要保存之前的渲染表面
pd3dDevice->GetRenderTarget( 0, &pBackBuffer );
执行完RTT之后要重新设定渲染表面,因为之前是渲染到纹理的表面
pd3dDevice->SetRenderTarget(0, pBackBuffer );
结论:对渲染到纹理这个知识点有了初步的了解,细节部分还需要大家自己动手才能领会到。
RTT能用到的地方:
1、 实现反射的效果。通过RTT,不用执行两次一样的渲染
电视机播放效果