【发布时间】:2015-02-12 22:22:01
【问题描述】:
我正在尝试创建设置着色器制服的功能,但是当我尝试编译它时出现此错误:
错误 2 错误 C2719: 'value': 形参 __declspec(align('16')) 不会对齐
这里是函数代码:
void Shader::setUniform(std::string name, const glm::mat4 value){
GLint uniform = glGetUniformLocation(m_program, name.c_str());
glUniformMatrix4fv(uniform, 1, GL_FALSE, (GLfloat*)&value);
}
我正在使用 Visual Studio 2013。
【问题讨论】:
-
const std::string &name, const glm::mat4 &value. -
GLM 需要 16 字节对齐才能使其 SIMD 优化工作,因此它会告诉编译器这就是问题所在。另一方面,GL 根本不关心
value是否在 16 字节边界上对齐。无论如何,你应该通过引用传递这些,没有理由复制一个矩阵发送到 OpenGL。