2011-06-06 14 views

Odpowiedz

11

http://www.khronos.org/registry/webgl/specs/latest/#DYNAMIC_INDEXING_OF_ARRAYS „WebGL pozwala tylko na dynamiczny ustalające z wyrażeniami, indeksy pętli lub w kombinacji. Jedyny wyjątek stanowi jednolity dostęp w cieniującymi wierzchołków, które mogą być oznaczane za pomocą dowolnego wyrazu”.

Spróbowałeś? Jeśli to nie zadziałało, jest kilka opcji.

Jeśli masz małą liczbę wartości, jeśli-else może działać poprawnie. AFAIK jednakowe wartości będą i tak ładowane do rejestrów, więc zrobienie na nich kilkunastu cykli matematyki nie sprawi, że twój shader będzie wolniejszy.

Dla dużej liczby wartości tekstury są najlepszym wyborem.

+10

jest obejście: '/ * podana zmienna i jest indeksem */for (int x = 0; x

-1

nie testowałem go, ale nie dostaniesz żadnego błędu kompilacji z poniższego

//index as a float 
attribute lowp float vColorIndex; 
//the array 
uniform vec4 Colors[16]; 

//type cast the float in an int 
int index = int(vColorIndex); 
//use index 
vec4 col = Colors[index]; 
Nie
+0

To się nie powiedzie w czasie wykonywania. – jes5199

Powiązane problemy