我目前正在尝试在渲染器中正确实现伽玛校正。我已将帧缓冲区设置为glEnable(GL_FRAMEBUFFER_SRGB)
为SRGB,现在可以正确导入SRGB纹理了。我知道三种方法可以做到这一点:
vec3 realColor = pow(sampledColor, 2.2)
让OpenGL为我做:glTexImage2D(..., ...,
[GL_SRGB
, ..., ..., ..., GL_RGB, ..., ...);
直接转换值:
for (GLubyte* pixel = image; pixel < image + size; ++pixel)
*pixel = GLubyte(pow(*pixel, 2.2f) + 0.5f);
现在,我正在尝试使用第三种方法,但是它不起作用。
这里有一些图像。
所以现在我的问题是方法3出了什么问题,因为它看起来与正确的结果完全不同(假设方法2是正确的,如果我认为是正确的,那么这是正确的。)>]
我目前正在尝试在渲染器中正确实现伽玛校正。我已经使用glEnable(GL_FRAMEBUFFER_SRGB)将帧缓冲区设置为SRGB,现在剩下的就是导入SRGB纹理了...
我使用glEnable(GL_FRAMEBUFFER_SRGB)将帧缓冲区设置为SRGB;