Я записываю данные в 3D-текстуру из фрагментного шейдера, и мне нужно асинхронно считывать эти данные в системную память.Кажется, что единственным средством асинхронного запуска операции упаковки в буферный объект является вызов glReadPixels()
с указателем NULL
.Но эта функция требует прохождения прямоугольника, определяющего область для чтения.Теперь я не знаю, игнорируются ли эти параметры при использовании PBO, но я предполагаю, что нет.В этом случае я понятия не имею, что передать этой функции, чтобы получить всю трехмерную текстуру.Даже если мне придется читать отдельные фрагменты (что было бы глупо для IMO), я все еще не представляю, как сообщить OpenGL, какой фрагмент считывать.Я что-то упустил?
Кстати, я мог бы использовать отдельные 2D текстуры для каждого среза, но это могло бы испортить (3D-) миппинг, если я не ошибаюсь.Я хотел использовать трехмерные карты, чтобы эффективно находить области интереса в результирующей трехмерной текстуре.
PS Извините за неоптимальные теги, очевидно, никто никогда не спрашивал о трехмерных текстурах раньше, и, поскольку язапрещено создавать новые теги ...