5

我需要在 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 中重写程序)?
4

1 回答 1

0

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

于 2017-11-27T23:30:37.917 回答