gpt4 book ai didi

c++ - 延迟的上下文未填充D3D11_MAPPED_SUBRESOURCE大小

转载 作者:行者123 更新时间:2023-12-03 07:26:14 26 4
gpt4 key购买 nike

我有一个3D应用程序,它使用4个线程,每个线程都有一个延迟的上下文。问题是,当我使用延迟上下文映射(ID3D11DeviceContext::Map)资源时,变量 RowPitch DepthPitch 等于0。我得到了指向映射资源的指针,并且通过内存检查器我看到它具有保留内存(如calloc)。

我只有ATI图形卡有此问题。

以下代码显示了问题出在哪里(hieroglyph3引擎的一部分):

D3D11_MAPPED_SUBRESOURCE Data;
Data.pData = NULL;
Data.DepthPitch = Data.RowPitch = 0;

if ( nullptr == pGlyphResource ) {
Log::Get().Write( L"Trying to map a subresource that doesn't exist!!!" );
return( Data );
}
// TODO: Update this to use a ComPtr!
// Acquire the native resource pointer.
ID3D11Resource* pResource = 0;
pResource = pGlyphResource->GetResource();

if ( nullptr == pResource ) {
Log::Get().Write( L"Trying to map a subresource that has no native resource in it!!!" );
return( Data );
}

// Perform the mapping of the resource.
// This function must fill Data but it only fill the pointer to the mapped resource
HRESULT hr = m_pContext->Map( pResource, subresource, actions, flags, &Data );

if ( FAILED( hr ) ) {
Log::Get().Write( L"Failed to map resource!" );
}

return( Data );

hieroglyph3中,您可以下载并对其进行测试。该代码位于688行的 PipeLineManagerDX11.cpp 中,您可以找到该类也可以对其进行检查 here

最佳答案

问题是在功能正常的ATI GPU中无法填充该变量。在NVIDIA GPU中不会发生这种情况。

解决方案是使用填充变量的NVIDIA GPU。

关于c++ - 延迟的上下文未填充D3D11_MAPPED_SUBRESOURCE大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37438896/

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