che sto cercando di fare funzione per impostare le uniformi degli shader, ma quando provo a compilare l'ottengo questo errore:parametro formale con __declspec (allineare ('16')), non sarà allineato
Error 2 error C2719: 'value': formal parameter with __declspec(align('16')) won't be aligned
Ecco il codice della funzione:
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);
}
sto usando Visual Studio 2013.
'const std :: string & name, const glm :: mat4 & value'. –
GLM ha bisogno di un allineamento di 16 byte perché le ottimizzazioni SIMD funzionino, quindi dice al compilatore questo ed è da lì che il problema sta venendo. GL, d'altra parte, non si preoccupa affatto se 'value' è allineato su un limite di 16 byte. Dovresti passare questi per riferimento comunque, non c'è motivo di fare una copia di una matrice da inviare ad OpenGL. –