GLSL着色器|圆的切片
我正在尝试用带有GLSL着色器的石英合成器制作一种极时钟。问题是我对这种编程语言一无所知。但是,我一直在搜索并发现以下代码是一个良好的开端: 顶点着色器: 片段着色器: 现在我想知道在哪里对这段代码说,它将根据输入变量的不同程度绘制GLSL着色器|圆的切片,glsl,geometry,clock,degrees,Glsl,Geometry,Clock,Degrees,我正在尝试用带有GLSL着色器的石英合成器制作一种极时钟。问题是我对这种编程语言一无所知。但是,我一直在搜索并发现以下代码是一个良好的开端: 顶点着色器: 片段着色器: 现在我想知道在哪里对这段代码说,它将根据输入变量的不同程度绘制 提前感谢您根据我的经验,我只能建议您在尝试使用GLSL之前对其基础知识进行概括,而不了解其基本内容;看一看,;你是对的,最好的选择是从头开始。非常感谢。 #version 120 void main() { gl_Position = gl_ModelV
提前感谢您根据我的经验,我只能建议您在尝试使用GLSL之前对其基础知识进行概括,而不了解其基本内容;看一看,;你是对的,最好的选择是从头开始。非常感谢。
#version 120
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
}
#version 120
uniform sampler2D tex0;
uniform float border; // 0.01
uniform float circle_radius; // 0.5
uniform vec4 circle_color; // vec4(1.0, 1.0, 1.0, 1.0)
uniform vec2 circle_center; // vec2(0.5, 0.5)
void main (void)
{
vec2 uv = gl_TexCoord[0].xy;
vec4 bkg_color = texture2D(tex0,uv * vec2(1.0, -1.0));
// Offset uv with the center of the circle.
uv -= circle_center;
float dist = sqrt(dot(uv, uv));
if ( (dist > (circle_radius+border)) || (dist < (circle_radius-border)) )
gl_FragColor = bkg_color;
else
gl_FragColor = circle_color;
}