Конференция "Игры" » Перевети спрайтовую DirectX игру с 16 бит цвета на 32
 
  • GrayFace © (13.07.08 18:29) [0]
    Реально ли сделать сабж без изменений самих алгоритмов отрисовки? Т.е. пользуясь только хуками DirectX и сменой параметров каких-нибудь DirectX вызовов. При этом некоторое замедление скорости не страшно.
    (конкретно, игра - Heroes 3)
  • @!!ex © (13.07.08 18:49) [1]
    Игра скорее всего использует DirectShow.
    DirectShow обеспечивает прямой доступ к буфферу вывода. Соответственно все картинки должны иметь такой же формат, как и буффер вывода.
    Соответственно если ты хуком добьешся, что буффер станет 32 битным, то попытка записать туда 16 битный спрайт обернется кашей в буффере.
  • Sapersky (13.07.08 21:26) [2]
    DirectDraw она использует, DirectShow это видео.
    С 90% вероятностью у "заточенной" под 16 бит игры все исходные картинки тоже 16-битные, заранее урезанные до 65536 цветов (меньше объём, можно урезать более аккуратно, чтобы потери качества не бросались в глаза). Т.е. переводить на 32 бита нет смысла, качество не улучшится.
  • @!!ex © (13.07.08 23:33) [3]
    > DirectDraw она использует, DirectShow это видео.

    да да. Именно это и имел ввиду. :))
  • GrayFace © (14.07.08 23:32) [4]
    Единственное, для чего это нужно - чтобы запускать игру в окне при 32 битах в настройках системы, т.к. сейчас она требует 16.
  • @!!ex © (15.07.08 10:03) [5]
    Попробуй выставить качество буффера в 32 цвета... вдруг получится. :)
  • Sapersky (15.07.08 13:11) [6]
    Можно создать 16-битный бэкбуфер в 32-битном режиме, но в системной памяти (т.е. фактически отключить аппаратное ускорение - но это не страшно, учитывая мощности современных CPU). Также и все прочие поверхности (кроме первички, ест-но) должны создаваться в сист. памяти.
    Т.е. хук на CreateSurface, на SetCooperativeLevel (чтобы переключить на оконный режим), на Flip с заменой его на Blt бэкбуфера в первичку.

    А в чём проблема-то? Некорреткое масштабирование 800*600 на широкоэкранный монитор? Возможно, проще решить её обновлением драйверов или какой-нибудь утилитой.
 
Конференция "Игры" » Перевети спрайтовую DirectX игру с 16 бит цвета на 32
Есть новые Нет новых   [134430   +2][b:0][p:0]