我应该如何在directx/opengl中输入RGB颜色?
因此,有许多不同的颜色空间被命名为RGB。有些是线性的,有些是伽马的。我假设每个监视器使用的是不同的 我应该将directx或opengl着色器中的rgb值解释为哪一个 是否有一个“安全”的颜色空间,我可以假设一个典型的用户将使用?比如,游戏行业的每个人都认为他们的用户会使用RGB空间吗 或者有没有一种方法可以检测监视器使用的颜色空间我应该如何在directx/opengl中输入RGB颜色?,opengl,colors,directx,monitors,Opengl,Colors,Directx,Monitors,因此,有许多不同的颜色空间被命名为RGB。有些是线性的,有些是伽马的。我假设每个监视器使用的是不同的 我应该将directx或opengl着色器中的rgb值解释为哪一个 是否有一个“安全”的颜色空间,我可以假设一个典型的用户将使用?比如,游戏行业的每个人都认为他们的用户会使用RGB空间吗 或者有没有一种方法可以检测监视器使用的颜色空间 我需要知道,以便我可以转换和从标准颜色空间,如CIE XYZ。如果有点错误也可以,但我希望尽可能接近典型硬件。在没有进一步规定的情况下,进入OpenGL的颜色直接
我需要知道,以便我可以转换和从标准颜色空间,如CIE XYZ。如果有点错误也可以,但我希望尽可能接近典型硬件。在没有进一步规定的情况下,进入OpenGL的颜色直接进入监视器,只应用视频伽马渐变。OpenGL中的所有颜色操作都是线性的 然而,OpenGL提供了特殊的sRGB纹理格式,在进行颜色操作之前,先从颜色空间线性化纹理颜色。为了补充这一点,还支持sRGB帧缓冲区格式 另请参见这些以获取更多信息和信息 当然,对于某些应用程序,sRGB是一个不合适的颜色空间(太小,8位的保真度太低)。在这些情况下,我建议使用“原始颜色”OpenGL图像和帧缓冲区格式,并在着色器中执行颜色转换。对于纹理(假设R=X,G=Y,B=Z),使用一些接触颜色空间(XYZ非常适合)和一些HDR图像格式(即每个通道10位或更多位)。渲染到屏幕外帧缓冲区对象,并在最后的后处理步骤中从XYZ帧缓冲区转换到屏幕颜色空间 或者有没有一种方法可以检测监视器使用的颜色空间 OpenGL不处理设备管理。您必须使用操作系统的功能来确定输出设备的颜色配置文件