我尝试用OpenGL创建简单的计算机断层扫描查看器,数据是代表单个切片的一维浮点数组。
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, width, height, 0, GL_LUMINANCE, GL_FLOAT, data);问题
如何为窗口目的修改片段着色器中的颜色/浮点值,以使某些treshold以上的值显示为白色,treshold以下的值显示为黑色,其余的值显示为灰色
我的片段着色器
out vec4 FragColor;
in vec3 ourColor;
in vec2 TexCoord;
uniform sampler2D ourTexture;
void main()
{
FragColor = texture(ourTexture, TexCoord);
}一切都很好,但我有一些问题

发布于 2021-07-16 14:46:28
简单地将阈值与线性插值结合起来,就像这样:
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……
https://stackoverflow.com/questions/68404001
复制相似问题