Войти
ПрограммированиеФорумГрафика

OpenGL compute shader не может в sRGBA

#0
11:30, 12 июня 2019

Есть текстура в формате GL_SRGB8_ALPHA8. Я хочу записать в нее данные через compute шейдер. В шейдере layout rgba8. Однако оба вызова
glBindImageTexture(..., GL_SRGB8_ALPHA8, ...);
glBindImageTexture(..., GL_RGBA8, ...);
дают ошибку 1282. При этом на вулкане все нормально передается и пишется. Я правильно понимаю, что это "убогое апи"?

п.с. Странно что чуваку с аналогичной проблемой при 1.5к просмотров никто ничего не ответил https://community.khronos.org/t/writing-to-gl-srgb8-alpha8-textur… -shader/73623


#1
(Правка: 12:27) 12:07, 12 июня 2019

GL_INVALID_OPERATION, 0x0502

Возможно что compute shader не переваривает такой формат, он все-таки заточен под массивы, а на вулкане конвертер стоит. А если GL_RGBA32F, то все пашет?

#2
(Правка: 15:43) 15:37, 12 июня 2019

foxes
По ошибкам уточнение: GL_SRGB8_ALPHA8 - 1281, GL_RGBA32F (с rgba32f и c rgba8), GL_RGBA8 - 1282.

#3
(Правка: 16:34) 16:34, 12 июня 2019

BingoBongo
> GL_SRGB8_ALPHA8 - 1281
GL_INVALID_VALUE, 0x0501 - то есть такое значение "GL_SRGB8_ALPHA8" нельзя использовать для glBindImageTexture.
Второе возникает скорее всего из за того что ты неверно создаешь саму текстуру.

ПрограммированиеФорумГрафика