首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OpenGL片段着色器中修改采样纹理的颜色值

如何在OpenGL片段着色器中修改采样纹理的颜色值
EN

Stack Overflow用户
提问于 2021-07-16 13:47:43
回答 1查看 32关注 0票数 1

我尝试用OpenGL创建简单的计算机断层扫描查看器,数据是代表单个切片的一维浮点数组。

代码语言:javascript
复制
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,  width, height, 0, GL_LUMINANCE, GL_FLOAT, data);

问题

如何为窗口目的修改片段着色器中的颜色/浮点值,以使某些treshold以上的值显示为白色,treshold以下的值显示为黑色,其余的值显示为灰色

我的片段着色器

代码语言:javascript
复制
out vec4 FragColor;
  
in vec3 ourColor;
in vec2 TexCoord;

uniform sampler2D ourTexture;

void main()
{
    FragColor = texture(ourTexture, TexCoord);
}

一切都很好,但我有一些问题

EN

回答 1

Stack Overflow用户

发布于 2021-07-16 14:46:28

简单地将阈值与线性插值结合起来,就像这样:

代码语言:javascript
复制
out vec4 FragColor;
  
in vec3 ourColor;
in vec2 TexCoord;

uniform sampler2D ourTexture;

void main()
    {
    vec4 col=texture(ourTexture, TexCoord);   // input color
    float t0=0.25,t1=0.75;                    // thresholds
    float t=length(col.rgb)/1.73205081;       // /sqrt(3) ... parameter is intensity of color
    t=(t-t0)/(t1-t0);                         // dynamic range <t0,t1> -> <0,1>
    t=max(t,0.0);                             // cut off unused range
    t=min(t,1.0);
    FragColor = vec4(t,t,t,col.a);
    }

注意,我没有测试它,因为我是直接在答案编辑器中编写的,所以可能会有一些隐藏的打字错误,并且太懒了,不能从头开始创建MCVE……

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68404001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档