Silk.net dx11 createxture2d сбое с флага SharedkeyedmutexC#

Место общения программистов C#
Ответить
Anonymous
 Silk.net dx11 createxture2d сбое с флага Sharedkeyedmutex

Сообщение Anonymous »

Я пытаюсь сделать общую текстуру в DX11, но
dx11 createxture2d не удастся с ошибкой "значение не попадает в ожидаемый диапазон".
при добавлении < /p>

Код: Выделить всё

ResourceMiscFlag.SharedKeyedmutex
< /code>
как флаги Misc.
Удаление флага заставляет метод работает, но < /p>
_backBuffer.QueryInterface()
< /code>
Не удастся с «указанным листом недопустимы». < /p>
var tDesc = new Texture2DDesc
{
Format = Format.FormatR8G8B8A8Unorm,
Height = (uint)Size.Height,
Width = (uint)Size.Width,
MipLevels = 1,
ArraySize = 1,
SampleDesc = new SampleDesc(1, 0),
CPUAccessFlags = 0,
Usage = Usage.Default,
MiscFlags = (uint)(ResourceMiscFlag.SharedKeyedmutex),
BindFlags = (uint)(BindFlag.RenderTarget | BindFlag.ShaderResource),
};

ID3D11Texture2D* texture = null;
device.CreateTexture2D(tDesc, &texture);

_backBuffer = texture;
_mutex = _backBuffer.QueryInterface();

// device.CreateTexture2D
public unsafe void CreateTexture2D(
Texture2DDesc desc,
SubresourceData* pData,
ID3D11Texture2D** pTextureBuffer
)
{
//ID3D11Device5
//pData is null here
SilkMarshal.ThrowHResult(_device.CreateTexture2D(desc, pData, pTextureBuffer));
}

//Createingg the D3D11Device
private unsafe void CreateD3D11Device()
{
// Set the creation flags
var flags = CreateDeviceFlag.BgraSupport;
#if DEBUG
flags |= CreateDeviceFlag.Debug;
#endif
ComPtr adapter1 = default;
var driverType = D3DDriverType.Hardware;
if (_gpuPreference != GpuPreference.Unspecified)
{
GetHardwareAdapter(adapter1.GetAddressOf());
driverType = D3DDriverType.Unknown;
}

// Create the D3D11 device
D3DFeatureLevel pFl = default;
fixed (D3DFeatureLevel* pFeatureLevels = FeatureLevels)
{
SilkMarshal.ThrowHResult(
_d3d11.CreateDevice(
adapter1,
driverType,
default,
(uint)flags,
pFeatureLevels,
(uint)FeatureLevels.Length,
D3D11.SdkVersion,
ref _device,//ID3D11Device5
&pFl,
ref _deviceContext //ID3D11DeviceContext4
)
);
}

Debug.WriteLine($"{pFl.ToString()}");

_threadShield = _deviceContext.QueryInterface();
_threadShield.SetMultithreadProtected(true);

adapter1.Dispose();
adapter1 = null;
}
< /code>
ПРИМЕЧАНИЕ: Я могу сделать эту работу с Sharpdx, как это < /p>
_texture = new Texture2D(device,
new Texture2DDescription
{
Format = Format.R8G8B8A8_UNorm,
Width = size.Width,
Height = size.Height,
ArraySize = 1,
MipLevels = 1,
SampleDescription = new SampleDescription { Count = 1, Quality = 0 },
CpuAccessFlags = default,
OptionFlags = ResourceOptionFlags.SharedKeyedmutex,
BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource
});
_mutex = _texture.QueryInterface();
Есть идеи, в чем может быть проблема?

Подробнее здесь: https://stackoverflow.com/questions/796 ... mutex-flag
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»