DirectX 9 Shadow Map在新的Nvidia卡上失败

时间:2018-09-05 10:29:23

标签: c++ nvidia directx-9 shadow-mapping stencil-buffer

我遇到了一个问题,有人声称我的Nvidia图形卡上的阴影贴图创建代码失败。我已经在互联网上搜寻了许多小时,但找不到一个确定的解决方案。

发生这种情况的特定卡是“ NVidia GTX 1050 ti 4GB”

这是我制作初始阴影贴图的代码(失败在第一个函数上):

            if(  FAILED( hr = g_pd3dDevice->CreateTexture( VGlobal::SHADOW_MAP_SIZE, VGlobal::SHADOW_MAP_SIZE, 1, D3DUSAGE_RENDERTARGET,
                                                             D3DFMT_R32F, D3DPOOL_DEFAULT, &g_pShadowMap[lpShadow], NULL ) ) )

....

        // Create the screen-sized buffer map
            if( FAILED( g_pd3dDevice->CreateTexture( d3dpp.BackBufferWidth / 2, d3dpp.BackBufferHeight / 2, 1, D3DUSAGE_RENDERTARGET,
                                                     D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &g_pScreenMap, NULL ) ) )

    ....

    // Create the shadow depth surface
        if( FAILED( g_pd3dDevice->CreateDepthStencilSurface( VGlobal::SHADOW_MAP_SIZE, VGlobal::SHADOW_MAP_SIZE, D3DFMT_D24S8,
                                                             D3DMULTISAMPLE_NONE, 0, TRUE, &g_pShadowDepth, NULL ) ) )
        {
            MessageBox( hWnd, "Unable to create shadow depth surface!", ERROR, MB_OK | MB_ICONERROR );
            return E_FAIL;
        }



        // Create the general depth surface
        if( FAILED( g_pd3dDevice->CreateDepthStencilSurface( d3dpp.BackBufferWidth / 2, d3dpp.BackBufferHeight / 2, D3DFMT_D24S8,
                                                             D3DMULTISAMPLE_NONE, 0, TRUE, &g_pNewDepthRT, NULL ) ) )
        {
            MessageBox( hWnd, "Unable to create general depth surface!", ERROR, MB_OK | MB_ICONERROR );
            return E_FAIL;
        }

我在这里找到了该线程,用以说明Nvidia可以使用D3DUSAGE_DEPTHSTENCIL,但带有D3DFMT_R32F的D3DUSAGE_RENDERTARGET应该被所有卡接受。 https://www.gamedev.net/forums/topic/649614-shadow-mapping-d3dusage-depthstencil-or-d3dusage-rendertarget/

多年来,我没有更改我的阴影渲染代码。我一直在浏览Nvidia编程文档,但找不到确切的答案。

我唯一想到的选择是,如果D3DUSAGE_RENDERTARGET失败,我还需要测试D3DUSAGE_DEPTHSTENCIL创建是否正常工作?

我认为Nvidia最近可能有所更改,并且不确定这些更改是什么。不幸的是,我没有Nvidia显卡可以对此进行测试。

感谢您的帮助!

0 个答案:

没有答案