4,511
社区成员
发帖
与我相关
我的任务
分享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);