【问题标题】:Gray materials appear to dark when rendering to framebuffer渲染到帧缓冲区时,灰色材质看起来很暗
【发布时间】:2014-10-27 08:37:30
【问题描述】:

当我指定任何绝对灰色的材质时:

 glAmbientColor [0] = 0.2;
 glAmbientColor [1] = 0.2;
 glAmbientColor [2] = 0.2;
 glAmbientColor [3] = 1;

 glDiffuseColor [0] = 0.8;
 glDiffuseColor [1] = 0.8;
 glDiffuseColor [2] = 0.8;
 glDiffuseColor [3] = 1;

 glSpecularColor [0] = 0.2;
 glSpecularColor [1] = 0.2;
 glSpecularColor [2] = 0.2;
 glSpecularColor [3] = 1;

 glEmissiveColor [0] = 0;
 glEmissiveColor [1] = 0;
 glEmissiveColor [2] = 0;
 glEmissiveColor [3] = 1;

然后渲染一个对象:

 glEnable (GL_LIGHTING);

 glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT,   glAmbientColor);
 glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE,   glDiffuseColor);
 glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR,  glSpecularColor);
 glMaterialfv (GL_FRONT_AND_BACK, GL_EMISSION,  glEmissiveColor);
 glMaterialf  (GL_FRONT_AND_BACK, GL_SHININESS, 0.2);

对于自定义帧缓冲区,灰色材料看起来很暗,即。它具有更高的对比度。渲染到默认帧缓冲区让材质正常显示。任何其他绝对灰色的材质总是正常渲染。

我没有设置特殊的 OpenGL 选项。我总是在法线上使用 glEnable (GL_NORMALIZE)。

我必须以特殊方式配置我的帧缓冲区吗?有人对 NVidia 显卡和最新的驱动程序 (331.89) 有同样的问题吗?

例如,如果我稍微改变一下diffuseColor:

glDiffuseColor [0] = 0.8 + 0.0001;

材质总是正常渲染!

我如下图所示创建帧缓冲区:

    glGenFramebuffers (1, &id);

    // Bind frame buffer.
    glBindFramebuffer (GL_FRAMEBUFFER, id);

    // The color buffer
    glGenRenderbuffers (1, &colorBufferId);
    glBindRenderbuffer (GL_RENDERBUFFER, colorBufferId);
    glRenderbufferStorage (GL_RENDERBUFFER, GL_RGBA8, width, height);
    glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorBufferId);

    // The depth buffer
    glGenRenderbuffers (1, &depthBufferId);
    glBindRenderbuffer (GL_RENDERBUFFER, depthBufferId);
    glRenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT, width, height);
    glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBufferId);

【问题讨论】:

  • 您的帧缓冲区设置是什么样的(目标渲染缓冲区或纹理和 FBO)。也许你不知何故进入了 sRGB 模式,这可能会导致这种情况。
  • 如何切换到 sRGB 模式?我认为这是可能的。

标签: c++ opengl


【解决方案1】:

我自己发现,它与帧缓冲区无关。一切正常。问题首先出现在后期图像处理过程中,因为图像保存为单色 PNG 而不是 RGB png。

其实是这个问题: ImageMagick Reduces Colorspace to Gray

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2013-03-16
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多