GLSL错误的颜色值

时间:2013-06-22 18:09:01

标签: opengl colors glsl

我似乎遇到了一个奇怪的情况,因为根据不同地方的各种搜索,没有其他人似乎有同样的问题。大多数问题涉及混合或照明或任何其他各种任务...在我的情况下,问题存在着色缺陷。

我希望着色器能够提供精确的颜色;也就是说,如果我截取我正在使用的东西并使用颜色选择器,我希望它显示我在代码中使用的相同颜色。看起来很简单,对吧?

void main(void)
{
    gl_FragColor = vec4(0.0, 175.0 / 255.0, 50.0 / 255.0, 1.0);
}

也够简单吧?现在,在有人喊叫“这是分裂之前!它不会完全符合你的号码!”我已经用灰度测试了,并找到了一种方法,使其具有100%准确的灰色阴影,但颜色发生了奇怪的事情...我使用这个,当我截图并使用颜色选择器时,我得到:R:68 ,G:166,B:45

现在,我不是一个数学天才,但我很确定0.0没有额外的编辑是0为红色。在此之前,我试图传递一个统一的颜色,所以我开始查看我的代码,看看我做的是不是很奇怪,即使我95%确定我不是。然后我用这个固定的,硬编码的vec4替换了所有内容,看看IT是否提供了正确的信息。

任何人都有任何想法,为什么我得到奇怪的红色值,也许为什么其他两个值不是那里的QUITE?当然,他们很接近......但我想更接近;确切的,如果可能的话。

编辑: 所以...我对glReadPixels并不完全熟悉,所以如果我做错了,请告诉我。但是,我的结果是我期望输出的结果。

GLfloat *data = new GLfloat[4];
    if (data)
    {
        glReadPixels(0, 0, 1, 1, GL_RGBA, GL_FLOAT, data);
        std::cout << data[0] << " " << data[1] << " " << data[2] << " " << data[3] << std::endl;
    std::cout << data[0] * 255.0 << " " << data[1] * 255.0 << " " << data[2] * 255.0 << " " << data[3] * 255.0 << std::endl;
        delete data;
    }

着色器:0.0,0.0,1.0,1.0

来自ReadPixels的RGBA:0,0,1,1

着色器:0.0,175.0 / 255.0,50.0 / 255.0,1

来自ReadPixels的RGBA:0,0.686275,0.196078,1

来自ReadPixels的RGBA乘以255:0,175,50,255

0 个答案:

没有答案