我需要在 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),我仍然看到条带。
- WPF 不支持 10 位监视器吗?
- 是否有任何替代的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