Je me bats depuis des jours et je n'arrive toujours pas à comprendre ce que je fais de mal. J'ai un attribut vertex composé d'un seul float et je veux comparer sa valeur avec other dans une instruction if mais je reçois toujours l'instruction true même si ce n'est pas le cas; Voici mon vertex shader était le problème se produit:Problèmes d'utilisation de la valeur de l'attribut vertex dans opengl es 2.0
attribute vec4 a_Position;
attribute vec3 a_Normal;
attribute vec2 a_TextureCoord;
attribute highp float a_Bone;
uniform mat4 bone_1;
uniform mat4 bone_0;
varying vec2 v_TextureCoord;
void main() {
v_TextureCoord = a_TextureCoord;
vec4 posy;
float a = a_Bone;
if(20.0<a)
posy = bone_0*a_Position;
else
posy = bone_1*a_Position;
gl_Position = posy;
}
si je remplace ce qui est en instruction if avec « true » ou « false » toutes les choses fonctionnent comme prévu ... mais si je suis en train de utiliser cette valeur d'attribut pour comparer l'instruction if agit comme si l'instruction est toujours vraie même si la valeur a_Bone est 1.0 ou 2.0 (nettement plus petit 20.0)
Souhaitez-vous fournir plus d'informations sur la façon dont vous transmettez la variable uniforme et les codes d'attribut vertex? – Tokenyet
oui ... tous les attributs de vertex sont stockés dans un vbo .. – Madalin
GLES20.glEnableVertexAttribArray (a_bone); GLES20.glVertexAttribPointer (a_bone, 1, GLES20.GL_FLOAT, false, pas, (position_count + normal_count + texCoord_count) * bytes_per_float); de cette façon je fais le transfert de données – Madalin