'#version 330 core' sur NVIDIA,comportement particulier en OpenGL concernant les sommets vertex shaders et des commentaires sur le profil de base 330 en utilisant
En utilisant glBindAttribLocation (programme, 0, "in_Vertex"); le vertex d'entrée fonctionne avec un "in vec4 in_Vertex;". Cependant, j'ai remarqué que sans l'appel de la fonction OGL dans l'application client, cela fonctionne toujours. Il semble être «la première variable d'entrée par défaut». Pourquoi? Devrait-il être omis ou être explicitement connecté via glBindAttribLocation? [Quel est l'idéal selon la norme?] Aussi "in vec4 gl_Vertex;" fonctionne alors que la spécification l'appelle obsolète et le compilateur de shaders ne donne aucun avertissement. Pourquoi? Je m'y attendais pour au moins prévenir. Je suppose que le dernier peut être un bug dans le compilateur (compilateur GLSL) mais le premier problème est particulièrement déroutant.
Je peux ajouter que si gl_Vertex fonctionne sur le noyau 3.3 sur NVIDIA, cela ne veut pas dire que cela fonctionnera sur d'autres fournisseurs ou sur le futur matériel. Suivez les spécifications si vous voulez une compatibilité croisée. –
@Matias: vrai. En fait, il devrait erreur, pas d'avertissement. – Bahbar
Je ne vois pas comment le laisser à la mise en œuvre est même une option. Si ce n'est pas universel dans quel ordre les sommets d'entrée sont donnés à un var alors il faudrait certainement utiliser explicitement glBindAttribLocation pour s'assurer qu'il est applicable à tous les fournisseurs. –