|
|

楼主 |
发表于 2004-10-16 21:58:00
|
显示全部楼层
Re:请教一个Direct3D的纹理生成问题
我做的是Direct9 C版里的一个例子,名字叫ShadowMap,有些人应该看过的。其中有一个函数OnFrameRender,里面有一段( Render the shadow map),老师说让我把这一段改用纹理来实现。具体过程他没说的很清楚,只是说可以实现的,让我自己查资料,查相关函数的用法。说是逐像素用clear函数写成一张4*4的纹理。我现在还没搞清楚怎么用这张纹理表示物体的阴影,还有阴影是动态的,那纹理也应该是不断变化的,纹理怎样随着阴影的变化而变化。导师很忙的,我也没机会问他。这里D3D高手比较多,要是哪位知道这个过程是怎样的,具体怎么实现,请指点小弟一下,感激不尽!我把Render the shadow map这段代码附在下面,其中*号之间是要我改的部分。
// Render the shadow map
LPDIRECT3DSURFACE9 pOldRT = NULL;
V( pd3dDevice->GetRenderTarget( 0, &pOldRT ) );
LPDIRECT3DSURFACE9 pShadowSurf;
if( SUCCEEDED( g_pShadowMap->GetSurfaceLevel( 0, &pShadowSurf ) ) )
{
pd3dDevice->SetRenderTarget( 0, pShadowSurf );
SAFE_RELEASE( pShadowSurf );
}
LPDIRECT3DSURFACE9 pOldDS = NULL;
/ **************************************
if( SUCCEEDED( pd3dDevice->GetDepthStencilSurface( &pOldDS ) ) )
pd3dDevice->SetDepthStencilSurface( g_pDSShadow );
{
CDXUTPerfEventGenerator g( DXUT_PERFEVENTCOLOR, L"Shadow Map" );
RenderScene( pd3dDevice, true, fElapsedTime, &mLightView, &g_mShadowProj );
}
if( pOldDS )
{
pd3dDevice->SetDepthStencilSurface( pOldDS );
pOldDS->Release();
}
pd3dDevice->SetRenderTarget( 0, pOldRT );
SAFE_RELEASE( pOldRT );
**************************************/ |
|