渲染到纹理
首先我们得声明所需要的对象。当然我们需要
一张用来渲染的纹理。此外,我们还需要两个
Surface 对象。一个是用来存储后台缓冲区,
一个用来当纹理的渲染对象。后面我再详细介
绍它们。另外我们还需要两个矩阵,一个是用
来当纹理的投影矩阵,另一个是存储原来的矩
阵。
LPDIRECT3DTEXTURE9 pRenderTexture = NUL
L;
LPDIRECT3DSURFACE9 pRenderSurface = NU
LL,pBackBuffer = NULL;
D3DXMATRIX matProjection,matOldProjection;
现在我们来创建纹理。前两个参数是纹理的宽
度和高度,第三个参数是纹理的多级渐进纹理
序列参数,在这里是设为 1 ,第四个参数非常
重要而且必须设为 D3DUSAGE_RENDERTARGE
T ,表明我们所创建的纹理是用来渲染的。剩
下的参数就是指纹理格式,顶点缓冲区的内存
位置,和一个指向纹理的指针。当纹理是用来
当渲染对象时,顶点缓冲区的内存位置必须设
为 D3D_DEFAILT 。
g_App.GetDevice()->CreateTexture
(256,256,1,D3DUSAGE_RENDERTARGET,D3D
FMT_R5G6B5,D3DPOOL_DEFAULT,&pRenderT
exture,NULL);
为了访问纹理内存对象,我们需要一个 Surfac
e 对象,因为 D3D 中的纹理是用这样的一个 S
urface 来存储纹理数据的。为了得到纹理表面
的 Surface, 我们需要调用方法 GetSurfaceLeve
l() 。第一个参数我们设为 0 ,第二个参数为
一个指向 surface 对象的指针。
pRenderTexture->GetSurfaceLevel(0,&pRender
Surface);