GLSL, tablica tekstur o różnej wielkości
Podczas wykonywania wielowątkowości w GLSL, czy istnieje i tak indeksowalna tablica próbników, gdzie każda Tekstura ma inny rozmiar? Ta składnia nie jest poprawna:
uniform sampler2D texArray[5];
W tej chwili wydaje się, że jedyną opcją jest samodzielne tworzenie samplerów:
uniform sampler2D tex1;
uniform sampler2D tex2;
uniform sampler2D tex3;
uniform sampler2D tex4;
uniform sampler2D tex5;
/ Align = "center" bgcolor = "# e0ffe0 " / cesarz japonii / / align = center / Jest jakieś rozwiązanie? 2 answers
Kto tak mówi? Tablice próbników z pewnością są poprawne(w zależności od wersji). To, jak je używasz, to inna sprawa.Ta składnia nie jest poprawna:
GLSL 1.20 i nowsze nie pozwalają na tworzenie tablic próbnikowych.
W GLSL od 1.30 do 3.30 możesz mieć tablice samplera, ale z poważnymi ograniczeniami indeksu. Indeks musi być całkowym wyrażeniem stałym. Tak więc, podczas gdy możesz zadeklarować tablicę samplera, nie możesz pętli ponad to.
GLSL 4.00 i nowsze pozwalają indeksowi być " dynamicznie jednorodnym wyrażeniem całkowym ". Termin ten zasadniczo oznacza, że wszystkie instancje shadera (w ramach tego samego wywołania draw) muszą uzyskać te same wartości.
W GLSL 4.00+ można więc zapętlać stały zakres i indeksować tablicę próbników z licznikiem pętli. Możesz nawet uzyskać Indeks z jednolitej zmiennej. To, czego nie możesz zrobić, to mieć indeks zależny od wejścia do etapu shadera (chyba że ta wartość jest taka sama we wszystkich wystąpieniach wywołanych przez polecenie renderowania) lub pochodzi z wartości pochodzącej z dostępu tekstury (chyba że ta wartość jest taka sama we wszystkich wystąpieniach wywołanych przez polecenie renderowania), lub coś w tym stylu.Jedynym wymogiem na teksturach umieszczonych w tablicach próbników jest to, że pasują one do typu próbnika. Więc musisz użyć GL_TEXTURE_2D
na wszystkich elementach tablicy sampler2D
. Poza tym tekstury mogą mieć dowolną liczbę różnic, w tym Rozmiar. Tablica istnieje, aby ułatwić kodowanie; nie zmienia semantyki tego, co tam jest.
I pamiętaj: każdy pojedynczy element w tablicy próbnika musi być powiązany z własną jednostką obrazu tekstury.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 01:05:42
Jeszcze nie. Może to zostanie dodane do późniejszej wersji OpenGL w dół drogi, ale wątpię.Czy w każdym razie istnieje indeksowalna tablica próbników, gdzie każda Tekstura ma inny rozmiar?
/ Align = "left" / Jest jakieś rozwiązanie?
Jako obejście można użyć tekstur tablicy i używać tylko podregionów każdej warstwy. Użyj tablicy vec4, aby zapisać każdy obrazek na każda warstwa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-20 02:55:20