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,不用执行两次一样的渲染

电视机播放效果

posted @ 2010-10-16 16:00  QGraphic  阅读(240)  评论(0)    收藏  举报