Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как лучше? [Delphi, Windows]


Nostradamus ©   (2002-10-08 18:51:00) 

Возник такой вопрос как лучше: делать графику маленького размера, а потом выводить спомощью StretchDraw или сразу нормального размера если не нужна большая скорость прорисовки. Просто если рисовать нормального размера игра получается очень объёмная, но если делать StretchDraw, то будет потеря качества. Я вот незнаю насколько большая эта потеря какчества.


k   (2002-10-11 15:54:00) [1]

как тому же StratchDraw сам непрочь по-тормозить.........


Nostradamus   (2002-10-10 18:50:00) [2]

Ок, спасибо за подробное объяснение. Теперь всё ясно.


Gandalf   (2002-10-10 14:41:00) [3]

>получается всё равно что-то типа StretchDraw применять надобно >чтоб нормально её изобразить???
Если хочешь сохранять пропорции, то да, придется - использовать либо StretchDraw либо нечто для сжатия спрайта.Если тебе скорость и качество не важны, то используй StretchDraw. Если важно и то и то - используй OpenGL или DirectX. Если важно качество, найди или сам сделай процедурку для сжатия спрайта с фильтрацией. Но как правильно заметил cyborg в не 3д играх принято при смене разрешения оставлять как есть, т.е. разрешение стало больше, значит юниты стали мельче, но их стало больше помещатся на экране.


cyborg   (2002-10-10 12:25:00) [4]

Если делаешь стратегию, то делай как сказали, графика одна для всех разрешений. Например посмотри игру Противостояние 3 или 4.


Nostradamus   (2002-10-10 08:25:00) [5]

>Gandalf
Понял. Теперь хотябы понятно что рисовать надо и как.
Только вот один вопрос. Хорошо нарисовал я графику под макс. разрешение, так получается всё равно что-то типа StretchDraw применять надобно чтоб нормально её изобразить???


Gandalf   (2002-10-09 22:39:00) [6]

>Nostradamus
>А что это за специфические ситуации о которых ты говоришь?
Ну скажем надо сделать эффект взврыва, у нас есть анимация (набор спрайтов) с вырастающей сферой с рлавно меняющимися цветами, мы эти сферы отрисовывает с random смещением от центра взрыва с неким коэфициентом растяжения (или сжатия) - получаем неплохой эффект взрыва. Но это только пример. Например нужно градиентную заливку делать от RGB(0,0,0) до RGB(255,0,0) - понятно что максимум 256 шагов. Чтобы залить скажем прямоугольник с длинной 800, используем StretchDraw. Ну и так далее.

>Но при смене разрешения если не растягивать графику то появится
>пустое сесто или что-то будет вылазить из поля зрения. Или я >что-то не так понимаю?

Правильно понимаешь. Но это можно обойти поменяв угол зрения - как фактический результат мастабирование.

ЗЫ: Рисовать графику для всех разрешений глупо. Обычно рисуют маскимальное (сам выбераешь его) разрешение. А остальные получаешь уменьшением. Как понимаешь уменьшение получается гораздо качественне чем увеличение - информацию не надо придумывать.


Nostradamus   (2002-10-09 19:55:00) [7]

>Sapersky_
>усть в больших разрешениях спрайты будут меньше - будет больше >обзор игрового поля
Но при смене разрешения если не растягивать графику то появится пустое сесто или что-то будет вылазить из поля зрения. Или я что-то не так понимаю?


Sapersky_   (2002-10-09 12:59:00) [8]

А рисовать графику для всех разрешений в любом случае не надо. Пусть в больших разрешениях спрайты будут меньше - будет больше обзор игрового поля. Так обычно и делают. Хотя вообще, конечно, хорошо, если будет опция "общий масштаб" (вроде "приблизить камеру/удалить").


Sapersky_   (2002-10-09 12:54:00) [9]

Я в том смысле, что StretchDraw не делает фильтрацию (т.е. получаются квадратики).


Nostradamus   (2002-10-09 03:50:00) [10]

>Daddy & Namo
Хорошо тогда встречный вопрос: тогда получается нужно рисовать графику для всех поддерживаемых игрой разрешений???

>Gandalf
Потери во времени в данном случае не проблема (как уже было сказано мне не нужна большая скорость). А что это за специфические ситуации о которых ты говоришь?

>Sapersky_
Не пойму почему нельзя растягивать спомощью StretchDraw и можно растягивать какой-нить FastFX.RotoZoom.

P.S. Спасибо за ответы.


Sapersky_   (2002-10-09 01:46:00) [11]

StretchDraw действительно не надо. Но если есть ускоритель, то обычный IDirectDrawSurface.Blt автоматически выполняет достаточно быстрое растяжение с фильтрацией. Если картинка плавная, без резких цветовых скачков, качество получается вполне приличное. Если ускорителя нет (нужно проверять), то можно растянуть предварительно, используя какую-нибудь графичекую библиотеку (FastLIB - FastFX.RotoZoom, или Graphics32). Единственный момент - растяжение с фильтрацией противопоказано спрайтам с цветовым ключом... т.е. этот метод подходит в большей степени для фонов.
Вообще, конечно, объём можно уменьшать и другими методами - использовать jpeg-и, 8-битные bmp.


Gandalf   (2002-10-08 21:28:00) [12]

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


Namo   (2002-10-08 20:44:00) [13]

через StretchDraw лучше не делать, будет такое д..мо!!!


Daddy   (2002-10-08 19:23:00) [14]

Лучше нормального размера. Я бы даже сказал, что вывод через StretchDraw - изврат.


Наверх

Титульная страница Поиск, карта сайта Написать письмо