Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该如何在directx/opengl中输入RGB颜色?_Opengl_Colors_Directx_Monitors - Fatal编程技术网

我应该如何在directx/opengl中输入RGB颜色?

我应该如何在directx/opengl中输入RGB颜色?,opengl,colors,directx,monitors,Opengl,Colors,Directx,Monitors,因此,有许多不同的颜色空间被命名为RGB。有些是线性的,有些是伽马的。我假设每个监视器使用的是不同的 我应该将directx或opengl着色器中的rgb值解释为哪一个 是否有一个“安全”的颜色空间,我可以假设一个典型的用户将使用?比如,游戏行业的每个人都认为他们的用户会使用RGB空间吗 或者有没有一种方法可以检测监视器使用的颜色空间 我需要知道,以便我可以转换和从标准颜色空间,如CIE XYZ。如果有点错误也可以,但我希望尽可能接近典型硬件。在没有进一步规定的情况下,进入OpenGL的颜色直接

因此,有许多不同的颜色空间被命名为RGB。有些是线性的,有些是伽马的。我假设每个监视器使用的是不同的

我应该将directx或opengl着色器中的rgb值解释为哪一个

是否有一个“安全”的颜色空间,我可以假设一个典型的用户将使用?比如,游戏行业的每个人都认为他们的用户会使用RGB空间吗

或者有没有一种方法可以检测监视器使用的颜色空间


我需要知道,以便我可以转换和从标准颜色空间,如CIE XYZ。如果有点错误也可以,但我希望尽可能接近典型硬件。

在没有进一步规定的情况下,进入OpenGL的颜色直接进入监视器,只应用视频伽马渐变。OpenGL中的所有颜色操作都是线性的

然而,OpenGL提供了特殊的sRGB纹理格式,在进行颜色操作之前,先从颜色空间线性化纹理颜色。为了补充这一点,还支持sRGB帧缓冲区格式

另请参见这些以获取更多信息和信息

当然,对于某些应用程序,sRGB是一个不合适的颜色空间(太小,8位的保真度太低)。在这些情况下,我建议使用“原始颜色”OpenGL图像和帧缓冲区格式,并在着色器中执行颜色转换。对于纹理(假设R=X,G=Y,B=Z),使用一些接触颜色空间(XYZ非常适合)和一些HDR图像格式(即每个通道10位或更多位)。渲染到屏幕外帧缓冲区对象,并在最后的后处理步骤中从XYZ帧缓冲区转换到屏幕颜色空间

或者有没有一种方法可以检测监视器使用的颜色空间

OpenGL不处理设备管理。您必须使用操作系统的功能来确定输出设备的颜色配置文件