Как создать 2D текстуру, используя DXGI формат DXGI_FORMAT_R1_UNORM? - PullRequest
0 голосов
/ 30 января 2020

Я хочу создать 1 бит на пиксель моно chrome текстуры 2D в DirectX 11 с использованием формата dxgi DXGI_FORMAT_R1_UNORM Я попытался сделать следующее, но он показывает следующие ошибки:

D3D11 ОШИБКА: ID3D11Device :: CreateTexture2D: устройство не поддерживает формат R1_UNORM. [STATE_CREATION ERROR # 92: CREATETEXTURE2D_UNSUPPORTEDFORMAT] D3D11: BREAK включено для предыдущего сообщения, которое было: [ERROR STATE_CREATION # 92: CREATETEXTURE2D_UNSUPPORTEDFORMAT]

1006 * *1006* * * * для рендеринга, но он говорит, как вы видели выше "R1_UNORM" не поддерживается устройством. Итак, какой формат следует использовать для создания текстуры 2D?

bitmapPixels - это динамическая c память 1-битного цветового массива в BYTE, подготовленная из этого алгоритма, который находится на рассмотрении Проверка кода: алгоритм битовой упаковки 1-битного моно chrome изображение

D3D11_TEXTURE2D_DESC desc;
ZeroMemory(&desc, sizeof(desc));
desc.Width = 32;
desc.Height = 32;
desc.ArraySize = 1;
desc.Format = DXGI_FORMAT_R1_UNORM;
desc.Usage = D3D11_USAGE_DEFAULT;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
desc.MipLevels = 1;
desc.SampleDesc.Count = 1;
desc.MiscFlags = 0;

const D3D11_SUBRESOURCE_DATA subResourceData = {bitmapPixels, 4, 4 * desc.Height};
device->CreateTexture2D(&desc, &subResourceData, &texture2D);

Ответы [ 2 ]

0 голосов
/ 31 января 2020

DXGI_FORMAT_R1_UNORM не поддерживается ни одним устройством Direct3D. Он существует только для некоторого старого взаимодействия шрифтов GDI Windows 10 эпохи Direct3D 10.0 и в основном не используется с Direct3D 10.1.

0 голосов
/ 30 января 2020

ID3D11Device::CheckFormatSupport

Получить поддержку заданного формата на установленном видеоустройстве.

...

A битовое поле со значениями перечисления D3D11_FORMAT_SUPPORT, описывающими, как указанный формат поддерживается на установленном устройстве. Значения ORed вместе.

...

D3D11_FORMAT_SUPPORT_TEXTURE2D Поддерживаются ресурсы 2D-текстуры.

Например, это форматы, поддерживаемые Intel (R) HD Graphics 620 (просто случайно выбрал графический процессор; нет DXGI_FORMAT_R1_UNORM там):

DXGI_FORMAT_R32G32B32A32_TYPELESS
DXGI_FORMAT_R32G32B32A32_FLOAT
DXGI_FORMAT_R32G32B32A32_UINT
DXGI_FORMAT_R32G32B32A32_SINT
DXGI_FORMAT_R32G32B32_TYPELESS
DXGI_FORMAT_R32G32B32_FLOAT
DXGI_FORMAT_R32G32B32_UINT
DXGI_FORMAT_R32G32B32_SINT
DXGI_FORMAT_R16G16B16A16_TYPELESS
DXGI_FORMAT_R16G16B16A16_FLOAT
DXGI_FORMAT_R16G16B16A16_UNORM
DXGI_FORMAT_R16G16B16A16_UINT
DXGI_FORMAT_R16G16B16A16_SNORM
DXGI_FORMAT_R16G16B16A16_SINT
DXGI_FORMAT_R32G32_TYPELESS
DXGI_FORMAT_R32G32_FLOAT
DXGI_FORMAT_R32G32_UINT
DXGI_FORMAT_R32G32_SINT
DXGI_FORMAT_R32G8X24_TYPELESS
DXGI_FORMAT_D32_FLOAT_S8X24_UINT
DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS
DXGI_FORMAT_X32_TYPELESS_G8X24_UINT
DXGI_FORMAT_R10G10B10A2_TYPELESS
DXGI_FORMAT_R10G10B10A2_UNORM
DXGI_FORMAT_R10G10B10A2_UINT
DXGI_FORMAT_R11G11B10_FLOAT
DXGI_FORMAT_R8G8B8A8_TYPELESS
DXGI_FORMAT_R8G8B8A8_UNORM
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
DXGI_FORMAT_R8G8B8A8_UINT
DXGI_FORMAT_R8G8B8A8_SNORM
DXGI_FORMAT_R8G8B8A8_SINT
DXGI_FORMAT_R16G16_TYPELESS
DXGI_FORMAT_R16G16_FLOAT
DXGI_FORMAT_R16G16_UNORM
DXGI_FORMAT_R16G16_UINT
DXGI_FORMAT_R16G16_SNORM
DXGI_FORMAT_R16G16_SINT
DXGI_FORMAT_R32_TYPELESS
DXGI_FORMAT_D32_FLOAT
DXGI_FORMAT_R32_FLOAT
DXGI_FORMAT_R32_UINT
DXGI_FORMAT_R32_SINT
DXGI_FORMAT_R24G8_TYPELESS
DXGI_FORMAT_D24_UNORM_S8_UINT
DXGI_FORMAT_R24_UNORM_X8_TYPELESS
DXGI_FORMAT_X24_TYPELESS_G8_UINT
DXGI_FORMAT_R8G8_TYPELESS
DXGI_FORMAT_R8G8_UNORM
DXGI_FORMAT_R8G8_UINT
DXGI_FORMAT_R8G8_SNORM
DXGI_FORMAT_R8G8_SINT
DXGI_FORMAT_R16_TYPELESS
DXGI_FORMAT_R16_FLOAT
DXGI_FORMAT_D16_UNORM
DXGI_FORMAT_R16_UNORM
DXGI_FORMAT_R16_UINT
DXGI_FORMAT_R16_SNORM
DXGI_FORMAT_R16_SINT
DXGI_FORMAT_R8_TYPELESS
DXGI_FORMAT_R8_UNORM
DXGI_FORMAT_R8_UINT
DXGI_FORMAT_R8_SNORM
DXGI_FORMAT_R8_SINT
DXGI_FORMAT_A8_UNORM
DXGI_FORMAT_R9G9B9E5_SHAREDEXP
DXGI_FORMAT_R8G8_B8G8_UNORM
DXGI_FORMAT_G8R8_G8B8_UNORM
DXGI_FORMAT_BC1_TYPELESS
DXGI_FORMAT_BC1_UNORM
DXGI_FORMAT_BC1_UNORM_SRGB
DXGI_FORMAT_BC2_TYPELESS
DXGI_FORMAT_BC2_UNORM
DXGI_FORMAT_BC2_UNORM_SRGB
DXGI_FORMAT_BC3_TYPELESS
DXGI_FORMAT_BC3_UNORM
DXGI_FORMAT_BC3_UNORM_SRGB
DXGI_FORMAT_BC4_TYPELESS
DXGI_FORMAT_BC4_UNORM
DXGI_FORMAT_BC4_SNORM
DXGI_FORMAT_BC5_TYPELESS
DXGI_FORMAT_BC5_UNORM
DXGI_FORMAT_BC5_SNORM
DXGI_FORMAT_B5G6R5_UNORM
DXGI_FORMAT_B5G5R5A1_UNORM
DXGI_FORMAT_B8G8R8A8_UNORM
DXGI_FORMAT_B8G8R8X8_UNORM
DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
DXGI_FORMAT_B8G8R8A8_TYPELESS
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
DXGI_FORMAT_B8G8R8X8_TYPELESS
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
DXGI_FORMAT_BC6H_TYPELESS
DXGI_FORMAT_BC6H_UF16
DXGI_FORMAT_BC6H_SF16
DXGI_FORMAT_BC7_TYPELESS
DXGI_FORMAT_BC7_UNORM
DXGI_FORMAT_BC7_UNORM_SRGB
DXGI_FORMAT_AYUV
DXGI_FORMAT_Y416
DXGI_FORMAT_NV12
DXGI_FORMAT_P010
DXGI_FORMAT_P016
DXGI_FORMAT_420_OPAQUE
DXGI_FORMAT_YUY2
DXGI_FORMAT_Y216
DXGI_FORMAT_AI44
DXGI_FORMAT_IA44
DXGI_FORMAT_P8
DXGI_FORMAT_A8P8
DXGI_FORMAT_B4G4R4A4_UNORM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...