我没有任何支持Deep-Color的硬件连接到我的电脑上,因此我无法自我实验,并且在线搜索" win32深色"或" win32 10位颜色" (或30位,48位或64位)没有任何相关或最近。最重要的结果仍然是2009年的NVIDIA PDF:https://www.nvidia.com/docs/IO/40049/TB-04701-001_v02_new.pdf - 它描述了使用OpenGL和NVIDIA API来显示每个通道超过8位的图像。
我理解使用OpenGL如何显示30位彩色图像:它有效地绕过操作系统,OpenGL表面在GPU上以深色呈现,并通过DisplayPort以适当的格式直接发送到显示器或HDMI。
但OpenGL以外有哪些选择?
在Win32中,在使用CreateWindow
创建窗口后,通过处理WM_PAINT
消息来呈现它,然后调用BeginPaint
,它为您提供了GDI设备的句柄 - 上下文,不能超过32bpp(每通道8位)。
虽然GDI表面上抽象出渲染设备的实现细节,包括颜色深度,但是不可能指定10bpp RGB值,例如(COLORREF
结构被硬编码为使用32位(8bpp){ {1}}值),漏洞抽象。
这是否意味着使用处理DWORD
的程序在Windows桌面中显示30bpp /深色内容并且OpenGL是唯一的方法是不可能的?
如果您试图从内存中的OpenGL渲染缓冲区向窗口表面进行blit会发生什么? (即如果在BD播放器中显示深色BluRay光盘时按PrintScreen,或在Photoshop中显示30位内容会发生什么?)