Конференция "Игры" » Вывод на экран при игре вдвоём за одним компьютером (OpenGL) [Delphi, Windows]
 
  • AlexanderMS © (05.08.08 12:54) [0]
    Думаю, знакомая ситуация. Нужно нарисовать в верхней половине экрана сцену с вида одной камеры (первого игрока), в нижней половине - со второй.
    Проблема в том, как сделать сначала область вывода на верхную половину экрана. А потом на нижнюю половину.
    Пробовал glViewPort, но она "растягивает" выведенное в ширину и сжимает в высоту (из-за диспропорций в кординатах, как мне кажется), думал, судя по названию, что должна быть эта функция.
    Пробовал обычно вывести сначала на весь экран вид от первого игрока, а потом от второго со смещением - но тогда работает тест глубины и вообще получается нечто невообразимое :)

    Подскажите, пожалуйста, как можно сделать.
  • Elec3C © (05.08.08 16:18) [1]
    Можно 2 RTT нарисовать на скрин-кваде (в правильной позиции, естественно, по оси y).

    Размеры RTT :
    Width = wWidth;
    Height = wHeight >> 1;

    Позиция RTT:
    1 RTT - y = 0;
    2 RTT - y = wHeight >> 1;

    Размер экрана:
    WORD wWidth, wHeight;
  • AlexanderMS © (05.08.08 16:39) [2]
    Elec3C ©, поясните, пожалуйста, как. Вот сейчас всё рисуется по-обычному (или как сказать). Что нужно сделать, чтобы вывести сцену на скрин-квад?
    Даже если представляю, то я не знаю, что это такое. И RTT тоже :)
    Можете показать пример, допустим, вывода одного треугольника на один скрин-квад, а другого - на другой? (можно и на Си)
    Используется OpenGL, на всякий случай повторюсь.
  • Elec3C © (05.08.08 17:51) [3]

    > вывода одного треугольника на один скрин-квад

    Не верно))

    Screen Quad - это квадрат, состоящий из 2 поликов, который отрисовывается после всей сцены, не в пространстве, а как бы "на экране". RTT - render to texture (отрисовка в текстуру). Принцип просто: рендеришь в 1 текстуру то, что "видит камера" 1 игрока (допустим), затем устанавливаешь камеру на 2 игрока, рендеришь, затем по налаживаешь на квад эти текcтуры, по координатам, которым я писал выше. В нете полно статей на эту тему. Просто по-гугли.

    Загляни сюда:
    nehe.gamedev.net
    pmg.org.ru/nehe/index.html

    Простой пример RTT(огл, с++) с квадом: www.slil.ru/26035333

    P.S. Я на дх сижу.
  • @!!ex © (05.08.08 18:06) [4]
    glViewPort прекрасно справляется с рендером в несколько окон.
    Никаких RTT не надо. Надо просто грамотно задавать параметры Вьюпорта.
    Если используешь RTT, то все равно нужно правильно Вьюпорт задавать! Иначе будут все теже искажения.

    Вот пример вывода на экран двух камер.
    http://freelance.ru/img/portfolio/big/42460.jpg

    P.S>
    Я этот скрин уже раз 10 выкладывал на форуме, так что это персонально для автора, остальные наверняка уже видели.
  • AlexanderMS © (05.08.08 19:16) [5]
    Большое спасибо! Всё оказалось намного проще.
    glViewPort

    нарушал пропорции, теперь я просто изменил параметры в
    glOrtho

    , и всё заработало!
    Отдельное спасибо за индивидуальный подход :)
  • Pa5ha © (07.08.08 16:36) [6]
    Немного не по теме, но, @!!ex, нельзя ли поподробнее ознакомиться с сим произведением, можно в исходниках :) Особо внимание привлекает отражение в воде. Как сделано?
 
Конференция "Игры" » Вывод на экран при игре вдвоём за одним компьютером (OpenGL) [Delphi, Windows]
Есть новые Нет новых   [134430   +4][b:0][p:0.001]