Sto tentando di associare le variabili uniformi per un determinato luogo, ma al momento non riesco a capire come:Come si collegano posizioni uniformi in GLSL?
Per associare attributi (così per esempio vertex/dati normali), io uso il seguente codice:
Override
protected void bindAttributes() {
super.bindAttribute(1, "position");
super.bindAttribute(2, "textureCoords");
super.bindAttribute(3, "normal");
}
protected void bindAttribute(int attribute, String variableName){
GL20.glBindAttribLocation(programID, attribute, variableName);
}
Mi piacerebbe fare lo stesso genere di cose per le variabili uniformi.
Attualmente, sto ottenendo le posizioni automaticamente assegnati in questo modo:
public int location_transformationMatrix;
public int location_lightPosition;
public int location_lightColour;
@Override
public void getAllUniformLocations(){
location_transformationMatrix = super.getUniformLocation("transformationMatrix");
location_lightPosition = super.getUniformLocation("lightPosition");
location_lightColour = super.getUniformLocation("lightColour");
}
Tuttavia, dal momento che sto allora legando gli attributi, questo è, nella migliore delle ipotesi, con la conseguente perdita di dati, come l'illuminazione e le normali e, nel peggiore dei casi, sta bloccando il gioco per circa il 60% delle persone che cercano di giocarci.
Funziona ancora se uso '#version 130' nella parte superiore del mio shader? – Joehot200
No. Come ho detto, è richiesto OpenGL 4.3 o successivo. Questo significa '#version 430'. O hai l'estensione specifica disponibile. – BDL