在OpenGL中渲染时禁用纹理颜色

在OpenGL中渲染时禁用纹理颜色,opengl,colors,textures,Opengl,Colors,Textures,左边是在任何照片查看器/编辑器中查看PNG时纹理的显示方式。右边是在OpenGL中渲染到四边形上的相同纹理。正如你所看到的,颜色差别很大。有人知道原因吗,以及如何解决这个问题 我使用的是LibGDX(它在Windows上使用Lwjgl),它只是一个简单的sprite集,用于上述纹理文件。如果没有对颜色进行转换,我的赌注是在查看器中正确使用sRGB颜色空间,而不是在您的应用程序中。好吧,除了sRGB,不同的查看器可能会对gamma进行不同的解释。PNG文件格式包含额外的gamma信息,剥离它可能是

左边是在任何照片查看器/编辑器中查看PNG时纹理的显示方式。右边是在OpenGL中渲染到四边形上的相同纹理。正如你所看到的,颜色差别很大。有人知道原因吗,以及如何解决这个问题


我使用的是LibGDX(它在Windows上使用Lwjgl),它只是一个简单的sprite集,用于上述纹理文件。

如果没有对颜色进行转换,我的赌注是在查看器中正确使用sRGB颜色空间,而不是在您的应用程序中。好吧,除了sRGB,不同的查看器可能会对gamma进行不同的解释。PNG文件格式包含额外的gamma信息,剥离它可能是有益的,如。我不是该领域的专家,但我希望这会有所帮助。@BartekBanachewicz我在Adobe Illustrator中保存时禁用了“转换为sRGB”选项,结果是一样的。我刚刚尝试在Internet Explorer和Chrome中打开PNG,它在OpenGL(右)上的显示方式,而windows image viewer、photoshop和adobe illustrator显示的颜色与左侧显示的颜色相同。困惑。事实上,我认为它与颜色管理和颜色配置文件有关,而与OpenGL无关。虽然我不知道如何使它在所有应用程序中看起来都一样。@terryhau:当然,Adobe Photoshop使用颜色配置文件来显示所有经过颜色校正的内容。大多数标准程序并不关心它,只是将RGB值传递给图形卡。在当前系统上解决此问题的方法是在程序中添加颜色管理。唯一可行的长期解决方案是将颜色管理深入操作系统图形基础设施;程序应使用接触颜色空间而不是RGB。