【发布时间】:2019-12-26 07:51:39
【问题描述】:
在link 的帮助下,我可以改变整个纹理的强度。现在我想检测纹理上所有强度大于 0.7 的点。我怎样才能做到这一点?
private void CreateShaders()
{
/***********Vert Shader********************/
vertShader = GL.CreateShader(ShaderType.VertexShader);
GL.ShaderSource(vertShader, @"
attribute vec3 a_position;
varying vec2 vTexCoord;
void main() {
vTexCoord = (a_position.xy + 1) / 2;
gl_Position = vec4(a_position,1);
}");
GL.CompileShader(vertShader);
/***********Frag Shader ****************/
fragShader = GL.CreateShader(ShaderType.FragmentShader);
GL.ShaderSource(fragShader, @"
precision highp float;
uniform sampler2D sTexture;
varying vec2 vTexCoord;
const float Epsilon = 1e-10;
//RGBtoHSV
//HSVtoRGB
void main ()
{
vec4 color = texture2D (sTexture, vTexCoord);
float u_saturate=0.7;
vec3 col_hsv = RGBtoHSV(color.rgb);
col_hsv.z *= (u_saturate * 2.0);
vec3 col_rgb = HSVtoRGB(col_hsv.rgb);
gl_FragColor = vec4(col_rgb.rgb, color.a);
}");
GL.CompileShader(fragShader);
}
【问题讨论】:
-
“检测所有点”是什么意思。您将如何处理这些点,分别处理其他点?
-
现在我想用黑色突出显示这些点。稍后我想将此点与另一个纹理的相同点进行比较。
标签: c# glsl shader fragment-shader opentk