Render To Texture中的问题

scwojiushiwo 2010-10-09 11:08:10
在d3d中,我使用rrt时,写了如下代码,不知道为什么在纹理上画的四边形显示不出来
g_pD3DDevice->CreateTexture(256,256,1,D3DUSAGE_RENDERTARGET,D3DFMT_R5G6B5,D3DPOOL_DEFAULT,&pRenderTexture,NULL);
pRenderTexture->GetSurfaceLevel(0,&pRenderSurface);
//D3DXMatrixPerspectiveFovLH(&matProjection,D3DX_PI / 4.0f,1,1,100);
D3DXMatrixOrthoOffCenterLH(&matProjection,-2.0f,2.0f,-2.0f,2.0f,0,100);
g_pD3DDevice->GetTransform(D3DTS_PROJECTION,&matOldProjection);
g_pD3DDevice->GetRenderTarget(0,&pBackBuffer);

//D3D loop
while(g_App.GetD3DStatus())
{
if(PeekMessage(&Message,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}

if(g_App.CheckDevice())
{
//render-to-texture
g_pD3DDevice->SetRenderTarget(0,pRenderSurface);
g_pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(100,100,100),1.0f,0);
g_pD3DDevice->BeginScene();


D3DXMatrixRotationY(&matRotationY,fRotation);
D3DXMatrixTranslation(&matTranslation,0.0f,0.0f,5.0f);
g_pD3DDevice->SetTransform(D3DTS_WORLD,&(matRotationY * matTranslation));
g_pD3DDevice->SetTransform(D3DTS_PROJECTION,&matProjection);

g_pD3DDevice->SetStreamSource(0,pTriangleVB,0,sizeof(D3DVERTEX));
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);

g_pD3DDevice->EndScene();

//render scene with texture
g_pD3DDevice->SetRenderTarget(0,pBackBuffer);
g_pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0);
g_pD3DDevice->BeginScene();

g_pD3DDevice->SetTexture(0,pRenderTexture);

g_pD3DDevice->SetTransform(D3DTS_WORLD,&matTranslation);
g_pD3DDevice->SetTransform(D3DTS_PROJECTION,&matOldProjection);

g_pD3DDevice->SetStreamSource(0,pQuadVB,0,sizeof(D3DVERTEX));
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);

g_pD3DDevice->EndScene();
g_pD3DDevice->Present(NULL,NULL,NULL,NULL);

但是我直接在纹理空间里面贴一张纹理的话就可以正常的显示,这是什么问题呢?
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scwojiushiwo 2010-10-27
  • 打赏
  • 举报
回复
能显示出来了,我把clear里面的D3DCLEAR_ZBUFFER删了就可以了,但是不知道为什么
shayla 2010-10-12
  • 打赏
  • 举报
回复
按照楼主描述"直接在纹理空间里面贴一张纹理的话就可以正常的显示"
应该是说直接对pRenderTexture加载图像可以正常显示吧?

RTT中间保存的文件也是正常的.

理论上这两者之后步骤是一样的.应该都可以显示的.
scwojiushiwo 2010-10-12
  • 打赏
  • 举报
回复
保存的文件是正常的!
shayla 2010-10-09
  • 打赏
  • 举报
回复
楼主在render-to-texture之后将pRenderTexture保存到硬盘文件看看是否正常吧.

4,511

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧