Comment cast en int en float en GLSL (WebGL)?
Mon code est (à l'intérieur de l'void main):
float res;
for(int i=0; i<15; i++) {
res = float(i)/15.0;
//...
}
Malheureusement je reçois une erreur de syntaxe au float(i)/15.0
Si je viens d'écrire i/15.0
, alors l'erreur est:
wrong operand types no operation '/' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'const float' (or there is no acceptable conversion)
Si j'essaie juste de i/15
puis le résultat est un entier, mais je voudrais obtenir un flotteur.
Comment est-il possible de jeter int
à float
?
En javascript, cette conversion se fait automatiquement - res = i / 15;
C'est GLSL, pas de javascript
Je collé votre code ci-dessus dans glslsandbox.com et il fonctionne très bien. Êtes-vous sûr que vous n'avez pas d'erreur à partir d'une autre ligne dans votre shader?
"Je reçois une erreur de syntaxe au flotteur(i)/15.0" Êtes-vous sûr? Cela semble bien, float(i) est la bonne façon de convertir je pour flotter.
C'est GLSL, pas de javascript
Je collé votre code ci-dessus dans glslsandbox.com et il fonctionne très bien. Êtes-vous sûr que vous n'avez pas d'erreur à partir d'une autre ligne dans votre shader?
"Je reçois une erreur de syntaxe au flotteur(i)/15.0" Êtes-vous sûr? Cela semble bien, float(i) est la bonne façon de convertir je pour flotter.
OriginalL'auteur Iter Ator | 2015-10-21
Vous devez vous connecter pour publier un commentaire.
Il semble que vous n'êtes pas autorisés à émettre en GLSL. Par conséquent, "vous devez utiliser un constructeur".
Essayez ceci:
PS: Si vous avez un coup d'oeil la documentation, il est dit que "... Soit de type entier peut être converti en float, et les entiers et les flottants peuvent être convertis en lits doubles." ... Je trouve bizarre que votre code n'est pas accepté par le GLSL compilateur.(cf. Reto Koradi commentaire)Merci pour cette remarque. J'ai ajouté une nouvelle référence: shaderific.com/glsl-types
J'obtiens toujours une erreur de syntaxe pour une raison:
An error occurred compiling the shaders: ERROR: 0:33: '1.0' : syntax error
Pourriez-vous s'il vous plaît poster tout le code du shader afin que nous puissions avoir une vue plus concrète sur le problème ?
Il fonctionne maintenant, merci 🙂
OriginalL'auteur maddouri