WPF 不支持 10 位监视器(又名 30 位颜色)吗?

Doesn't WPF support 10-bit monitors (aka 30 bit colors)?

我需要在 WPF 图像查看应用程序中支持每像素 10 位显示(也称为 30 位颜色)。

我有一个工作设置(10 位屏幕和 Nvidia Quadro),我已经能够通过在 PhotoShop 中使用渐变测试来验证 10 位支持是否有效: (http://www.tedlansingphotography.com/blog/?p=287) 和一个 NEC 演示程序(据我所知都使用 OpenGL)。

但是我无法让我的 WPF 应用程序在没有条带的情况下显示漂亮的渐变。 我尝试使用 PixelFormats.Rgb48 和 PixelFormats.Bgr101010 程序生成 WritableBitmap,但是当我在屏幕上绘制它时(通过将其分配给 System.Windows.Controls.Image.Souce)我仍然看到条带。

  1. WPF 不支持 10 位监视器吗?
  2. 是否有任何替代的 WPF 友好 API 支持它(或者我必须在 OpenGL 中重写程序)?

Wpf 不支持每通道 10 位 (bpc) 显示;尽管有 10bpc 的文件操作,而且 WPF 与 DirectX 具有互操作性,但只有 8 bpc。

要在 WPF 中有 10 bpc,您可能需要注入 OpenGL 或 DirectX 显示;使用 DirectX 优于 OpenGL 的优势在于 Geforce 显示卡也支持 10bpc 显示; OpenGL 10 bpc 显示仅由 Quadro 支持,如果我可以提及我知道的 GPU 制造商。

Photoshop 使用 OpenGL 进行显示,因此 Photoshop 的 10bpc 显示仅适用于 Quadro(这是由于 Quadro 驱动程序支持更完整的 OpenGL 功能)。

https://github.com/Microsoft/WPFDXInterop

https://www.codeproject.com/Articles/23736/Creating-OpenGL-Windows-in-WPF

https://www.codeproject.com/Articles/265903/Using-OpenGL-in-a-WPF-Application