gpt4 book ai didi

c++ - 纹理无法呈现 - DirectX 9

转载 作者:行者123 更新时间:2023-11-28 03:34:52 27 4
gpt4 key购买 nike

我在 DirectX 9 中有这段代码,我需要从 COM 接口(interface)获取 DC 并绘制它。我确实得到了 DC,它包含图像,但我得到的是黑屏。有什么想法吗?

    LPDIRECT3DSURFACE9 pRenderSurface = NULL, pRenderSurfaceTMP = NULL;

m_pRenderTexture->GetSurfaceLevel(0, &pRenderSurface);
if (pRenderSurface == NULL)
return FALSE;

m_pD3DDevice->CreateOffscreenPlainSurface(m_nWidth, m_nHeight,
D3DFMT_X8R8G8B8, D3DPOOL_SYSTEMMEM, &pRenderSurfaceTMP, 0);

m_pD3DDevice->GetRenderTargetData(pRenderSurface,pRenderSurfaceTMP);

HDC hDC = NULL;
hr = pRenderSurfaceTMP->GetDC(&hDC);
if (FAILED(hr))
return FALSE;

if (m_pViewObject != NULL)
{
// RECT is relative to the windowless container rect
RECTL rcRect = {0, 0, m_nWidth, m_nHeight};

// Draw onto the DC!
hr = m_pViewObject->Draw(DVASPECT_CONTENT, 1,
NULL, NULL, NULL, hDC, &rcRect, NULL, NULL,
0);
}


pRenderSurface->ReleaseDC(hDC);
pRenderSurface->Release();


// Draw the surface
m_pD3DDevice->SetStreamSource( 0, m_pVertexBuffer, 0, sizeof(Vertex) );
m_pD3DDevice->SetTexture( 0, m_pRenderTexture );


hr = m_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);

m_hbrBackground = NULL;
pRenderSurfaceTMP->Release();

提前致谢

最佳答案

确保 m_pRenderTexture 是使用 D3DUSAGE_RENDERTARGET 创建的。 pRenderSurfacepRenderSurfaceTMP 的大小和格式应该匹配。有关详细信息,请参阅 GetRenderTargetData 何时失败:http://msdn.microsoft.com/en-us/library/windows/desktop/bb174405(v=vs.85).aspx

关于c++ - 纹理无法呈现 - DirectX 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11240648/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com