gpt4 book ai didi

c++ - OpenGL framebuffer blitting 在启用时是否考虑 Gamma 校正?

转载 作者:搜寻专家 更新时间:2023-10-31 00:08:56 32 4
gpt4 key购买 nike

<分区>

这是我的问题,当我加载纹理时,我将它们加载为 SRGB 以将它们转换为线性空间。当我写入窗口系统提供的默认帧缓冲区时,我启用了 GL_FRAMEBUFFER_SRGB,以便写入帧缓冲区会将颜色从线性空间转换为 SRGB 空间。

现在的问题是我正在渲染到一个屏幕外的 FBO 中,然后将其传输到默认的帧缓冲区中。执行此操作时,打开或关闭 GL_FRAMEBUFFER_SRGB 无效。我已经尝试启用 GL_FRAMEBUFFER_SRGB 两者都使用默认帧缓冲区绑定(bind),并且使用屏幕外 FBO 绑定(bind),它们不起作用。

然而,如果我将 GL_SRGB 指定为我绑定(bind)为屏幕外 FBO 的颜色缓冲区的纹理的内部格式,则有效。我假设在这种情况下,当启用 GL_FRAMEBUFFER_SRGB 时,从片段着色器到纹理的写入会将其从线性空间转换为 SRGB 空间。

我想知道,从 FBO 到默认帧缓冲区的 blitting 似乎没有应用 GL_FRAMEBUFFER_SRGB 转换。因为我想在线性空间中工作,直到最终传输到默认帧缓冲区的后缓冲区,所以我如何在将屏幕外 FBO block 传输到默认帧缓冲区时应用转换?我猜想将屏幕外 FBO 采样为纹理并在默认帧缓冲区上渲染四边形会应用 SRGB 转换,但是没有办法使用帧缓冲区 blit 进行此转换吗?

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com