我希望在顶点着色器中创建挥动旗帜效果,这是我到目前为止所拥有的:
#version 330
layout(location = 0) in vec3 in_position;
layout(location = 1) in vec3 in_color;
uniform mat4 model_matrix, view_matrix, projection_matrix;
uniform vec3 culoare;
uniform float currentAngle;
out vec3 vertex_to_fragment_color;
void main(){
vertex_to_fragment_color = culoare;
vec4 v = vec4( in_position.x, in_position.y, in_position.z, 1.0 );
v.y = sin( in_position.x + currentAngle );
v.y += sin( in_position.z + currentAngle );
v.y *= in_position.x * 0.08;
gl_Position = projection_matrix*view_matrix*model_matrix*v;
}
current_angle是我发送到着色器的变量,它看起来像这样:
if ( currentAngle > 360.0f ) currentAngle -= 360.0f;
if ( currentAngle < 0.0f ) currentAngle += 360.0f;
我是新手,所以我真的可以用一些帮助来做到这一点。
答案 0 :(得分:1)
GLSL的sin()
和cos()
以弧度表示他们的参数,而不是度数。
您可以使用GLSL函数radians()
将度数转换为弧度。
您还必须细分您的旗帜矩形才能获得令人信服的效果。