首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

请教,如何使用CreateOffscreenPlainSurface创建的表面

2012-03-28 
请问,怎么使用CreateOffscreenPlainSurface创建的表面我将CreateOffscreenPlainSurface 创建的表面,调用Se

请问,怎么使用CreateOffscreenPlainSurface创建的表面
我将CreateOffscreenPlainSurface 创建的表面,调用SetRenderTarget,总是返回无效的调用,用IDirect3DDevice9::CreateTexture创建一个纹理,再调用纹理的GetSurfaceLevel得到一个表面去调用设备的SetRenderTarget也总是返回无效的调用,谁有可用的代码可否借阅一下?

[解决办法]
不需要创建离屏表面,即便创建,也必须创建到显存里(D3DPOOL_DEFAULT)
RTT示例

C/C++ code
void CRender::RenderExample(){    // m_pD3DDevice->BeginScene()    // ...    static bool bRTT = true;    IDirect3DSurface9* pOldSurface = NULL;    IDirect3DTexture9* pDstTexture = NULL;    if (bRTT)    {        // 用于RTT的纹理必须是D3DUSAGE_RENDERTARGET、D3DPOOL_DEFAULT参数        if (SUCCEEDED(D3DXCreateTexture(m_pD3DDevice, 1024, 1024, 0, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &pDstTexture)))        {            m_pD3DDevice->GetRenderTarget(0, &pOldSurface);    // 保存当前的渲染目标表面            IDirect3DSurface9* pDstSurface = NULL;            pDstTexture->GetSurfaceLevel(0, &pDstSurface);            m_pD3DDevice->SetRenderTarget(0, pDstSurface);            // 设置渲染目标        }        else        {            bRTT = false;        }    }    // 渲染部分    // ...    if (bRTT)    {        m_pD3DDevice->SetRenderTarget(0, pOldSurface);    // 恢复渲染目标表面        pOldSurface = NULL;        // 输出最终纹理        D3DXSaveTextureToFileA("out.png", D3DXIFF_PNG, pDstTexture, NULL);        pDstTexture->Release();        bRTT = false;    }    // ...    // m_pD3DDevice->EndScene();} 

热点排行