Требуется вывести в Windows HDR 10-бит изображение, из памяти. С++
По моему гуглению, сейчас есть два способа:
— древный — через OpenGL (как раньше это начинал делать фотошоп).
https://nvidia.custhelp.com/app/answers/detail/a_id/2895/~/10-and-12-bit-grayscale-technology-technical-brief
— новый — через DirectX(DXGi) и HDR, используя
https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/high-dynamic-range-and-wide-color-gamut
Два вопроса:
1. Хочется ссылок на проекты, какие можно скомпилировать, запустить и убедиться что все работает.
Но! Возможности проверить и отладить это на железе нет — есть Nvidia и AMD карты, но нет монитора с 10-бит.
2. Как это запрограммировать и отладить, не имея доступа к железу?
Забить на это дело и делать дизеринг не хочется. Предпочителен второй вариант (через DXGi).
3. Если использовать Direct2D, оно заработает автоматически?
CreateHwndRenderTarget с DXGI_FORMAT_R10G10B10A2_UNORM или DXGI_FORMAT_R16G16B16A16_UNORM или DXGI_FORMAT_R32G32B32A32_FLOAT выдает ошибку,
в т.ч. и при использовании D2D1_RENDER_TARGET_TYPE_SOFTWARE или D2D1_RENDER_TARGET_TYPE_HARDWARE.
В документации от MS написано, что они могут работать. "These formats may also work on an ID2D1HwndRenderTarget".
Но у меня не работают ни на интеловской карте, ни на Nvidia.
4. Или только хардкор — D2D не работает с этим без аппаратной поддержки?