从glsl纹理的位移

时间:2016-03-23 22:22:56

标签: opengl glsl

这是我的顶点着色器,我对它的期望是从纹理中获得正确的位移。它的作用是将我的飞机的每个顶点向上移动到同一水平

uniform sampler2D clouds    
void main()
{
    vec4 position = gl_Vertex;
    vec2 uv = gl_MultiTexCoord0.st;
    position.z = position.z + texture(clouds, uv.st);
    gl_Position = gl_ModelViewProjectionMatrix * position; 
}

1 个答案:

答案 0 :(得分:0)

我必须用varying声明我的位置和uv变量,只需要将纹理中的一个通道添加到Position变量的'z'组件中。

vertex_shader = """

varying vec4 Position;
varying vec2 TexCoord;
uniform sampler2D clouds;

void main()
{
    Position = gl_Vertex;
    TexCoord = gl_MultiTexCoord0;
    Position.z += texture2D(clouds, TexCoord.st).a; 
    gl_Position =  gl_ModelViewProjectionMatrix * Position;
}
"""

我发现this wikibook致力于blender3D的glsl编程