本文整理汇总了C++中Texture::GetDimensionFor方法的典型用法代码示例。如果您正苦于以下问题:C++ Texture::GetDimensionFor方法的具体用法?C++ Texture::GetDimensionFor怎么用?C++ Texture::GetDimensionFor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Texture
的用法示例。
在下文中一共展示了Texture::GetDimensionFor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//----------------------------------------------------------------------------
bool DX11Texture::CopyCpuToGpu(ID3D11DeviceContext* context,
unsigned int sri)
{
Texture* texture = GetTexture();
if (sri >= texture->GetNumSubresources())
{
LogWarning("Subresource index out of range.");
return false;
}
if (!PreparedForCopy(D3D11_CPU_ACCESS_WRITE))
{
return false;
}
// Map the staging texture.
D3D11_MAPPED_SUBRESOURCE sub;
HRESULT hr = context->Map(mStaging, sri, D3D11_MAP_WRITE, 0, &sub);
CHECK_HR_RETURN("Failed to map staging texture", false);
// Copy from CPU memory to staging texture.
auto sr = texture->GetSubresource(sri);
unsigned int numDimensions = texture->GetNumDimensions();
if (numDimensions == 1)
{
Memcpy(sub.pData, sr.data, texture->GetNumBytesFor(sr.level));
}
else if (numDimensions == 2)
{
CopyPitched2(texture->GetDimensionFor(sr.level, 1), sr.rowPitch,
sr.data, sub.RowPitch, sub.pData);
}
else // numDimensions == 3
{
CopyPitched3(texture->GetDimensionFor(sr.level, 1),
texture->GetDimensionFor(sr.level, 2), sr.rowPitch,
sr.slicePitch, sr.data, sub.RowPitch, sub.DepthPitch,
sub.pData);
}
context->Unmap(mStaging, sri);
// Copy from staging texture to GPU memory.
ID3D11Resource* dxTexture = GetDXResource();
context->CopySubresourceRegion(dxTexture, sri, 0, 0, 0, mStaging, sri,
nullptr);
return true;
}