顶点着色器中的多个ModelView矩阵

时间:2014-03-22 07:35:11

标签: opengl matrix opengl-es glsl shader

是否可以在单个(顶点?)着色器中使用多个模型视图矩阵?我已经得到了以下工作,但我不知道我是否建议尝试做什么,或者是否有替代方法来实现类似的工作?

// inputs
attribute vec4 position;

// textures
attribute vec4 inputTextureCoordinate0;
attribute vec4 inputTextureCoordinate1;

// matrices
uniform mat4 projectionMatrix;
uniform mat4 modelviewMatrix0;
uniform mat4 modelviewMatrix1;

// output
varying vec2 textureCoordinate0;
varying vec2 textureCoordinate1;

void main()
{
    gl_Position = position * projectionMatrix;
    textureCoordinate0 = vec2(inputTextureCoordinate0 * modelviewMatrix0);
    textureCoordinate1 = vec2(inputTextureCoordinate1 * modelviewMatrix1);
}

1 个答案:

答案 0 :(得分:1)

模型视图转换通常仅应用于顶点位置。纹理坐标通常不会被模型视图转换,因为它在大多数情况下都没有多大意义。

当然有正当理由通过矩阵转换纹理坐标,你当然可以传递许可的OpenGL版本的矩阵制服。