Controllo di flusso

GLSL ha in comune con il C tutti i costrutti di controllo eccetto lo switch-case, che non è presente.

{
  /* blocco di codice */
}

if (bool condizione)
  ...

if (bool condizione)
{
  /* istruzioni qui */
}

if (bool condizione)
{
  /* se e' vero, questo */
}
else
{
  /* altrimenti questo */
}

while (bool condizione)
  ...
  
do
  ...
while (bool condizione);

for (inizializzazione; bool condizione; incremento)
  ...

Le parole chiave continue e break mantengono lo stesso significato del C.

for (int i = 0; i < 5; ++i)
  {
  if (i == 3)
    continue;      // Salta all'iterazione successiva 
    
  ...
    
  if (i < 0)
    break;         // Esce dal ciclo 
  }

La gestione della visibilità delle variabili nei blocchi di codice è identica al C.

Esiste anche l'operatore ternario ed è esteso a tutti i tipi predefiniti e alle strutture. Come nel C, il risultato dell'operatore è uguale al secondo valore se la condizione è vera e al terzo valore se è falsa.

vec4 v = condizione ? vec4(1.0,2.0,3.0,4.0) : vec4(1.0,-1.0,0.0,1.0);
float b = condizione ? v.x : v.z;

Copyright © 2011 Riccardo Monica
Eccetto ove espressamente indicato altrimenti, il contenuto di questa pagina è disponibile secondo la licenza Creative Commons Attribuzione - Condividi allo stesso modo 3.0.