Code: Alles auswählen
unsigned int Id[BONE_COUNT];///< IDs for a bone in the skeleton
float Value[BONE_COUNT];///< the Weight for this bone
Im VertexShader soll das ganze irgendwie so aussehen:
Code: Alles auswählen
attribute unsigned int WeightIdsAtt[4];
attribute float WeightValuesAtt[4];
Code: Alles auswählen
GLint WeightIdLocation = glGetAttribLocation(ShaderProgram, "WeightIdsAtt");
GLint WeightValueLocation=glGetAttribLocation(ShaderProgram, "WeightValuesAtt");
glEnableVertexAttribArray(WeightIdLocation);
glVertexAttribPointer(WeightIdLocation, 4, GL_FLOAT, GL_TRUE, m_VertexSize, (void*)m_WeightsOffset);
glEnableVertexAttribArray(WeightValueLocation);
glVertexAttribPointer(WeightValueLocation, 4, GL_FLOAT, GL_TRUE, m_VertexSize,
(void*)(m_WeightsOffset+sizeof(unsigned int)*4));
Ich hab ein bisschen gelesen, aber finde keine genauen Infos: Gibt es Probleme mit Arrays als Attributvariablen? Oder mit unsigned int als Typ? Wenn ja, wie soll ich das umgehen, ich brauch ja irgendwie einen Arrayindex, um auf die Richtige BoneMatrix zuzugreifen (die dann später noch kommt). Also gibt es diesbezüglich prinzipielle Einschränkungen?
Und: Kann man das optimieren von Shadern irgendwie deaktivieren? Könnte zum Testen ab und zu nützlich sein.