Столкнулся с очередной проблемой по поводу глубины. Задача - имея текстуру с глубинами нарисовать квадрат, который передаст эти глубины.
Вот код:
//Биндинг фреймбуффера
glDisable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
//биндинг шейдера, юниформов, текстур, рендеринг.
Внутри шейдера пишу в gl_FragDepth. Но глубина остается той же!
Сразу после отрисовки пишу:
glClearDepth(0.1);
glClear(GL_DEPTH_BUFFER_BIT);
и текстура с глубиной действительно сбрасывается на 0.1!
Убираю очистку, делаю в шейдере принудительно gl_FragDepth = 0.1; (на случай вдруг в текстуре исходной бред, или биндинг не прошел) но все равно глубина не меняется!
Как задать глубину фрагмента? Я думал что нужно положить в gl_FragDepth значение от 0 до 1?
ultrablox
> Убираю очистку, делаю в шейдере принудительно gl_FragDepth = 0.1;
сделай очистку 1.0 и в шейдере принудительно gl_FragDepth = 0.5 :)
я так понимаю намек на внезапно сработающую glDepthFunc? :)
Проверил, не работает. Даже принудительно выставил в GL_ALWAYS, даже depth_test включал 0 все равно не пишет:(
ultrablox
пичалька :)
неужеле ati ?
нет, nvidia gtx 560, правда дрова поставил бету с opengl 4.3
дурацкая идея, но может glDrawBuffer(GL_COLOR_ATTACHMENT0); надо заменить на что-то еще?
ultrablox
> дурацкая идея, но может glDrawBuffer(GL_COLOR_ATTACHMENT0); надо заменить на
> что-то еще?
это тут при чём ? проверь запись в глубину из шейдера без всяких там fbo
При выключенном тесте глубины (glDisable(GL_DEPTH_TEST)) запись в буфер глубины не производится.
при depthmask(0) не производится
а при glDisable(GL_DEPTH_TEST отключается сравнение ИМХО
уббедись что к FBO приаттачена дептх текстура
Тема в архиве.