在顶点着色器中挥舞着国旗效果

时间:2014-01-09 22:32:45

标签: opengl

我希望在顶点着色器中创建挥动旗帜效果,这是我到目前为止所拥有的:

#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;

我是新手,所以我真的可以用一些帮助来做到这一点。

1 个答案:

答案 0 :(得分:1)

GLSL的sin()cos()以弧度表示他们的参数,而不是度数。

您可以使用GLSL函数radians()将度数转换为弧度。

您还必须细分您的旗帜矩形才能获得令人信服的效果。