DirectX C++ Windows 응용 프로그램에서 10 비트 색상에 대한 지원을 추가하고 싶습니다. DXGI_FORMAT_R10G10B10A2_UNORM을 사용하여 RGB 채널 당 10 비트 (RGB의 경우 총 30 비트)를 말합니다.디스플레이에서 10 비트 색상 지원 감지
시스템이이를 지원하는지, 디스플레이 모니터가 실제로이 모드를 지원하는지 어떻게 감지합니까?
예를 들어, 나는 디스플레이 모드 목록을 열거하고 있습니다 때문에 :
IDXGIOutput *output=null; for(Int i=0; OK(adapter->EnumOutputs(i, &output)); i++)
{
DXGI_FORMAT mode=DXGI_FORMAT_R10G10B10A2_UNORM;
UInt descs_elms=0; output->GetDisplayModeList(mode, 0, &descs_elms, null); // get number of mode descs
RELEASE(output);
}
그리고 내 노트북 디스플레이가 10 비트를 지원하지 않는 경우에도, 나는 아직도 해상도의 목록을 포함하여 유효한 결과를 얻을 수 있습니다. 나중에 10 비트를 가진 전체 화면 스왑 체인을 만들 수 있으며 모두 정상적으로 작동합니다.
그러나 모니터가 10 비트인지 8 비트인지 알 수 없기 때문에 수동으로 일부 디더링을 적용하여 10 비트를 시뮬레이션해야하는지 여부는 알 수 없습니다.
디스플레이가 실제로 10 비트 = 디더링이 필요하지 않거나 8 비트 == 그러면 사용자 정의 디더링 셰이더가 적용됩니다.
저는 클래식 Win32/WinAPI와 새로운 유니버설 윈도우 플랫폼 (그래서 두 플랫폼 모두를위한 솔루션 필요)과 함께 작업하고 있습니다.
안녕 척을 참조하십시오 답장을 주셔서 대단히 감사합니다. 이것이 내가 현재하고있는 일입니다. 현재로서는 사용자 설정이있는 최상의 솔루션입니다. 그러나 몇 가지 단점이 있습니다. 사용자가이 기능을 자동 감지하지 않고 설정해야하는 불편 함이 있으며, 또 다른 문제는 사용자가 모니터가 지원하는 기능을 알지 못하고 사용자가 잘못 선택한 경우 실제로 더 나쁜 품질을 얻는다. 예를 들어 그는 10 비트 정밀도를 선택할 수 있습니다. 8 비트보다 품질이 좋을 것이라고 생각합니다. – Esenthel
그러나 실제로 10 비트 설정에서는 디더링 셰이더가 비활성화되고 모니터가 8 비트이면 디더링 셰이더 없이는 더 나빠 보입니다. 해당 사용자 설정에서이 옵션의 역할을 명확히해야합니다. 가장 좋은 방법은 DirectX에서 실제로 지원되는 대상과 그렇지 않은 대상을 검색하는 옵션을 제공하는 것입니다. 앞으로 추가 될 새로운 기능을 요청하고 싶습니다. BTW. 이것은 내 게임 엔진입니다. 개발에 수년이 걸렸습니다. http://www.esenthel.com/ – Esenthel