GLSL texelFetchOffset работает с isampler2D, но не с usampler2D? - PullRequest
1 голос
/ 19 марта 2012

В фрагментном шейдере отлично скомпилируется следующее:

uniform isampler2D testTexture;
/* in main() x, y, xoff and yoff are declared as int and assigned here, then... */
int tmp = texelFetchOffset(testTexture, ivec2(x, y), 0, ivec2(xoff, yoff)).r;

Однако следующее не компилируется:

uniform usampler2D testTexture;
/* in main() x, y, xoff and yoff are declared as uint and assigned here, then... */
uint tmp = texelFetchOffset(testTexture, uvec2(x, y), 0, uvec2(xoff, yoff)).r;

Драйвер OpenGL 4.2 выдает следующее сообщение об ошибке компилятора:

ошибка C1115: невозможно найти совместимую перегруженную функцию "texelFetchOffset (usampler2D, uvec2, int, uvec2)

Это драйвер Nvidia для Linux 290. * для Quadro 5010M - но мне интересно, допустил ли я (новичок) ошибку и не работал ли здесь какой-либо спецификации?

1 Ответ

3 голосов
/ 19 марта 2012

Функция texelFetchOffset, которая принимает usampler2D стоп-кадр , принимает ivec2 в качестве координат текстуры и смещения.u применяется только к типу сэмплера и возвращаемому значению;не все в функции становится беззнаковым.

И помните: OpenGL не допускает неявных преобразований между целыми типами без знака и со знаком.

...