Я хочу создать промежуточную текстуру TextDe3D и привязать ее к неупорядоченному представлению доступа для выполнения некоторых вычислений с использованием DirectCompute, а затем прочитать их с помощью CPU. К сожалению, я получил ошибку при создании Texture3D используя следующее описание:Невозможно создать промежуточную структуру Texture3D
Texture3DDescription desc = new Texture3DDescription()
{
BindFlags = BindFlags.UnorderedAccess,
CpuAccessFlags = CpuAccessFlags.Read | CpuAccessFlags.Write,
Depth = sunAngleIterations,
Format = SharpDX.DXGI.Format.R32G32B32_Float,
Height = viewAngleIterations,
MipLevels = 1,
OptionFlags = ResourceOptionFlags.None,
Usage = ResourceUsage.Staging,
Width = heightIterations
};
texture = new Texture3D(device, desc);
Исключение брошено является:
{HRESULT: [0x80070057], Module: [General], ApiCode: [E_INVALIDARG/Invalid Arguments], Message: Parameter jest niepoprawny.}
Любые идеи, что здесь не так?
Включите устройство отладки Direct3D, чтобы получить более описательную диагностику из среды выполнения Direct3D. Используйте '' DeviceCreationFlags.Debug'' и установите «Включить собственную отладку кода». См. [SharpDX] (https://github.com/sharpdx/SharpDX/wiki/Usage) –
Да, я полностью забыл об этой функции, поскольку она не работала для меня на VS2012. Итак, что такое отладка, заключается в том, что промежуточный ресурс не может быть привязан к какому-либо этапу конвейера, а формат R32G32B32 не поддерживается для просмотра неупорядоченного доступа. Мне пришлось изменить формат на R32G32B32A32_Float, чтобы он работал. Спасибо огромное! –