Il y a un je suis constant utilisant à la fois dans mon code principal (Android) et dans le shader:OpenGL ES 2.0: constantes de partage entre le programme principal et le code shader
// Main code
private static final int XSIZE=16;
private float[] sinusoida = new float[XSIZE];
// shader
const int XSIZE = 16;
uniform float u_SinArray[XSIZE];
Les deux constantes se réfèrent à la même chose , donc évidemment il serait optimal de les partager et d'en changer automatiquement quand vous changez le premier. Est-ce possible?
@fadden Pour ne pas être difficile, mais je l'ai mentionné. – Dave
Ok, je vois. Passer un uniforme - remarquez que je déclare un tableau de la taille de XSIZE plus tard dans mon shader, puis-je déclarer un tableau de taille passé par un uniforme? Je ne pense pas, mais laissez-moi vérifier. Quoi qu'il en soit, même si cela fonctionne, cela ralentirait le shader, donc ce n'est pas le chemin à parcourir. – Utumno
Génération de code shader dans mon code Java - sonne mieux, bien que ce soit toujours maladroit. Actuellement, je suis en train d'écrire le shader dans un fichier texte qui plus tard sera lu dans mon code Java et compilé. Je suppose que je pourrais lire le fichier et remplacer la valeur de XSIZE pour le moment. Je ne sais pas si je veux déranger, ce n'est pas un gros problème pour écrire des parseurs GLSL ... J'espérais qu'il y avait un moyen de définir une constante et de la transmettre au compilateur shader, un peu comme lorsque vous compilez du code C définir une variable dans le makefile et y accéder dans votre code C? – Utumno