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

OpenGL render to texture mipmap level N

#0
22:55, 4 ноя 2018

Мне надо в шейдере читать из уровня N-1 и одновременно сохранять результат в уровень N (для каждой из двух текстур, но пока не суть). Я сделал FBO и во время аттача текстур указал последним параметром level=1 (а не 0, как обычно). В шейдере читаю через textureLod, но до него даже не доходит, проблема в том что при попытке рисовать в такой FBO происходит ошибка 1286 (invalid frame buffer). Не могу быстро нагуглить как это делается правильно. Кто-нибудь знает?

#1
23:29, 4 ноя 2018

может вызвать glCheckFramebufferStatus чтоб понять в чем проблема?

#2
0:13, 5 ноя 2018

Память под мипы выделена? Если нет, то при создании текстуры стоит вызвать glGenerateMipmap. Вместо textureLod можно ставить у текстуры параметр GL_TEXTURE_MAX_LEVEL равным N-1.

#3
3:11, 5 ноя 2018

в opengl, я считаю, с отсутствующими resource view, очень криво реализуется рендер в мипмапы. поэтому вместо того, чтобы мучиться с этой вакханалией, для шейдера построения мипов просто рендерю с помощью compute shader'а, который сразу пишет несколько пикселей в полученное изображение через imageStore(), который может писать в любой мип.

#4
9:19, 5 ноя 2018

Suslik
> с отсутствующими resource view
texture view давно уже добавили

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

Тема в архиве.