Конференция "Игры" » Затереть область z buffer [Delphi, Windows]
 
  • CrytoGen (24.06.08 07:44) [0]
    Здравствуйте.
    Проблема следующая : у меня есть несколько сложных объектов, один из них активный, я хочу чтобы вокруг активного объекта появился контур.
    Пытаюсь сделать следующим образом:
    1. Вывожу объект белым цветом в WireFrame c LineWidth(5);
    2. Вывожу объект чёрным цветом с glDisable(GL_DEPTH_TEST) и шейдером который устанавливает gl_FragDepth=1;
    3. Вывожу свой объект с обычными настройками и вижу что на нём появляются чёрные линии от WireFrame (первый шаг);
    т.е. судя по всему на втором шаге буфер цвета перезаписывается, а вот z буфер не перезаписывается.
    Сразу хочу добавить, что пробовал с текстурами, но при этом теряется z координата контура, а хотелось бы чтобы ближние объекты закрывали контур, а дальние нет.
  • @!!ex © (24.06.08 09:27) [1]
    Отключи запись в буффер глубины в первом шаге?
  • CrytoGen (24.06.08 11:24) [2]
    Если отключу на первом шаге, то контур будет затираться даже дальними объектами
  • @!!ex © (24.06.08 12:44) [3]
    > [2] CrytoGen   (24.06.08 11:24)

    Рисуй этот объект последним.
  • CrytoGen (25.06.08 07:50) [4]
    То же не подходит, потому что иногда требуется рисовать объект WireFrame, в этом случае внутреннюю часть нужно затереть чёрным цветом.
    В принципе как сделать чтобы затиралось разобрался - glDepthFunc(GL_ALWAYS).
 
Конференция "Игры" » Затереть область z buffer [Delphi, Windows]
Есть новые Нет новых   [134430   +2][b:0][p:0]