Чтение текстуры с плавающей точкой с glGetTexImage в качестве вывода int? - PullRequest
0 голосов
/ 16 марта 2012

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

Я ожидал, что он сузит значения до 0..1 и в целом сделает его довольно ужасным, но все же узнаваемым. Вместо этого он полностью черный, как будто он читает все значения черного.

Текстура имеет формат GL_R32F, и я пытаюсь прочитать ее как GL_UNSIGNED_BYTE с GL_RGBA в качестве вывода.

Должно ли это работать? Если нет, то что я должен искать?

1 Ответ

1 голос
/ 19 марта 2012

glGetTexImage должен иметь возможность вернуть то, что вы хотите (8 бит без знака). Очевидно, что считанное изображение не будет таким гладким, как оригинал, из-за потери точности (32 бита на 8 на компонент).

Однако, должен сказать, я не думаю, что когда-либо делал это специально с внутренним форматом R32F ... Попробуйте разные форматы, чтобы увидеть, если вы получите разные результаты. Кроме того, убедитесь, что выполнены все условия для работы glGetTexImage (привязка текстуры, отсутствие привязки буфера к GL_PIXEL_PACK_BUFFER и т. Д.). См. документ для glGetTexImage для всех условий.

...