是否可以在单个(顶点?)着色器中使用多个模型视图矩阵?我已经得到了以下工作,但我不知道我是否建议尝试做什么,或者是否有替代方法来实现类似的工作?
// 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);
}
答案 0 :(得分:1)
模型视图转换通常仅应用于顶点位置。纹理坐标通常不会被模型视图转换,因为它在大多数情况下都没有多大意义。
当然有正当理由通过矩阵转换纹理坐标,你当然可以传递许可的OpenGL版本的矩阵制服。