ImageLoad () GLSL всегда возвращает 0? - PullRequest
0 голосов
/ 17 сентября 2018

Я создал текстуру и заполнил ее некоторыми данными:

glBindTexture(GL_TEXTURE_2D, head_pointer_image);
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32UI, width, height, 0, GL_RED_INTEGER, GL_UNSIGNED_INT, data);

Затем я привязал ее к 0:

glBindImageTexture(0, head_pointer_image, 0, GL_FALSE, 0, GL_READ_WRITE, GL_R32UI); 
glUniform1ui(0, 0); // Not sure if necessary 

Если я проверю данные с помощью glGetTexImage (), то яполучить правильные значения, но если я попытаюсь прочитать его в своем шейдере, я получу только нули.

layout(binding = 0, r32ui) coherent uniform uimage2D head_pointer_image;

uint value = imageLoad(head_pointer_image, ivec2(gl_FragCoord.xy)).r;

Что я делаю не так?

1 Ответ

0 голосов
/ 21 сентября 2018

Я получил помощь извне, проблема заключалась в том, что моя текстура была неполной из-за фильтрации минификации по умолчанию GL_NEAREST_MIPMAP_LINEAR, для которой требуется полная цепочка mipmap, и у меня было только изображение базового уровня.

Установка GL_TEXTURE_MIN_FILTER в значение GL_LINEAR устранила мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...