Визуализируйте буфер глубины

Я пытаюсь визуализировать буфер глубины для отладки целей путем рисования его сверх фактического рендеринга, когда клавиша нажата. Это является главным образом рабочим, но получающееся изображение, кажется, увеличено. (Это не просто исходное изображение в нечетной шкале полутонов), Почему это не тот же размер как цветной буфер?

Это - то, что я использую представление буфер глубины:

void get_gl_size(int &width, int &height)
{
    int iv[4];
    glGetIntegerv(GL_VIEWPORT, iv);
    width = iv[2];
    height = iv[3];
}

void visualize_depth_buffer()
{
    int width, height;

    get_gl_size(width, height);

    float *data = new float[width * height];

    glReadPixels(0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, data);
    glDrawPixels(width, height, GL_LUMINANCE, GL_FLOAT, data);

    delete [] data;
}
12
задан Thanatos 30 April 2010 в 16:24
поделиться

4 ответа

Этот код должен работать. У вас случайно есть что-то еще, называемое glPixelZoom ? Стоит сбросить его, чтобы убедиться, что вы на самом деле не запрашиваете масштабирование.

0
ответ дан 3 December 2019 в 00:36
поделиться

Я не уверен, что это действительно ваша ошибка, но есть несколько вещей, которые я могу порекомендовать вам проверить. Было бы неплохо, если бы вы предоставили снимок экрана, на котором видно, как именно он увеличен.

Во-первых, убедитесь, что матрицы проекции/модельного вида точно такие же, как и в вашем рендере. Я не вижу, как это может повлиять, но на это стоит обратить внимание.

Во-вторых, в спецификации указано, что glPixelStore, glPixelTransfer и glPixelMap могут влиять на результаты, вам нужно убедиться, что они установлены правильно.

Если вам удастся заставить это работать, пожалуйста, поделитесь тем, что пошло не так - вопрос кажется интересным. :)

.
1
ответ дан 3 December 2019 в 00:36
поделиться

Еще одна вещь, которую необходимо проверить, - правильность положения вашего растра. см. glRasterPos. опубликованный код должен работать, но я вижу, как состояние облажается в другом месте (вы что-то рисуете, прежде чем визуализировать глубину ...) Тем не менее, вы, вероятно, находитесь в области драйверов gl, которая не была хорошо протестирована, потому что это необычно. что делать дальше: - протестируйте с другим поставщиком (ATI / NV ..) - записать прочитанные данные в файл, чтобы увидеть, работает ли рисование или чтение не так, как ожидалось

0
ответ дан 3 December 2019 в 00:36
поделиться

1) Выгрузите необработанные данные буфера глубины в файл.

2) Откройте его с помощью IrfanView (Open as -> RAW file)

3) Настройте параметры (ширина, высота) и формат пикселей в соответствии с вашим буфером глубины BPP (8 бит, 16 бит, ...). Убедитесь, что отмечена шкала серого.

4) Выпейте пива.

-4
ответ дан 3 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: