Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.04.2009, 16:55
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию Быстрое рисование

Вот известно что Canvas - тормоз, тогда есть ли в WinAPI быстрый способ? те же Windows.MoveTo и Windows.LineTo (ну и остальное что там) они же и написаны в процедура канвы. канву так тормозит Event'ы в VCL?
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #2  
Старый 22.04.2009, 17:09
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Цитата:
Сообщение от AleD
Вот известно что Canvas - тормоз, тогда есть ли в WinAPI быстрый способ? те же Windows.MoveTo и Windows.LineTo (ну и остальное что там) они же и написаны в процедура канвы.
Нет, в windows API быстрого canvas нет. Там (в API) специально сделали его через GDI чтобы все системы могли рисовать через него.

Для быстрого вывода специально разработаны такие штуки как
OpenGL, DirectX.

"канву так тормозит Event'ы в VCL?"
Нет. Первоначально задумано, что GDI не будет быстрым!
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #3  
Старый 22.04.2009, 17:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще, для большинства рисований скорости канвы вполне достаточно. Ее недостаточно только для игр и видео. Просто надо рисовать не на видимом компоненте, а в специальном буфере, а потом этот буфер целиком выводить на экран быстрым копированием. У меня так одна программа рабтает - момента вывода картинки я просто не вижу. и это на 2ГГц целероне и квстроенной интелевской карточке.
Ответить с цитированием
  #4  
Старый 23.04.2009, 01:46
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Ее недостаточно только для игр и видео
Вот мне как раз нужно для игры, использовал DelphiX + GDI (что бы там меню подрисовать, ещё мелочь какую нибудь), но fps падал до 10-20 с использованием GDI, без него до 60 было.
У меня ещё один встречный вопрос, существует GDI+, она может так же быстро рисовать если не использовать антиальясинг и другие эффекты для качества?
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #5  
Старый 23.04.2009, 10:01
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Цитата:
Сообщение от AleD
У меня ещё один встречный вопрос, существует GDI+, она может так же быстро рисовать если не использовать антиальясинг и другие эффекты для качества?
Да, вывод будет существенно быстрее. Но с Delphi постовляется только GDI.

Кстати, вот, почитай "в общих чертах" об оболочке: http://www.rsdn.ru/article/gdi/gdiplus1.xml
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #6  
Старый 23.04.2009, 10:28
Аватар для 0nni
0nni 0nni вне форума
Начинающий
 
Регистрация: 13.12.2008
Адрес: Туапсе
Сообщения: 161
Репутация: 20
По умолчанию

Вот поводу быстрого рисования через GDI (простой), вот тут довольно долго ребята обсуждали:
http://www.programmersforum.ru/showthread.php?t=338
Метод достаточно интересный рассчитан приемущественно на вывод буфферов (говых картинок, даже с альфаканалом), а не на рисование линий, эллписов и тд. Конечно и примитивы можно рисовать но алгоритм рисования того же эллипса будете делать сами.
Способ конечно не лучший, но жутко интересный (у меня даже есть движок недописаный).

А почему вы не смотрите в сторону DelphiX? Это не такой уж и плохой набор компонентов, вам не придется сильно заморачиваться по поводу загрузки рисунков и звуков, а так же их вывода/воспроизведения и сможете сосредоточиться сразу на игре, ну а там уже и чего посерьезнее найдете.
__________________
...сказал, и загрустил от бесспорной своей правоты
Ответить с цитированием
  #7  
Старый 23.04.2009, 15:06
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от 0nni
Вот поводу быстрого рисования через GDI (простой), вот тут довольно долго ребята обсуждали:
http://www.programmersforum.ru/showthread.php?t=338
Метод достаточно интересный рассчитан приемущественно на вывод буфферов (говых картинок, даже с альфаканалом), а не на рисование линий, эллписов и тд. Конечно и примитивы можно рисовать но алгоритм рисования того же эллипса будете делать сами.
Способ конечно не лучший, но жутко интересный (у меня даже есть движок недописаный).

А почему вы не смотрите в сторону DelphiX? Это не такой уж и плохой набор компонентов, вам не придется сильно заморачиваться по поводу загрузки рисунков и звуков, а так же их вывода/воспроизведения и сможете сосредоточиться сразу на игре, ну а там уже и чего посерьезнее найдете.
Не да почему, DelphiX я примерно 5-6 месяцев юзал, но толком ничо не написал (единственное что вышло - какая то фигня в которой летают точки типа по физике за гравитационным центор ). Мне хочется что то такое что бы рисовать можно было, линии, rectangle и другое, вот щас буду разбиратся с GDI+, само сабой с альфа-канальчками и их поворотам, судя по этой ссылке http://www.rsdn.ru/article/gdi/gdiplus1.xml в GDI+ всё это есть и причём работает это всё быстро

м, у кого нибудь есть примеры для этого GDI+? а то там вроде бы всё понятно но ничо не выходит
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter