Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2009, 10:14   #21
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
До "OpenGL" и "DirectX" мне ещё далеко...
Да ладно, есть же движки. Или вам до ковыряния изнанки GDI ближе?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.02.2009, 11:19   #22
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

To DomiNick
Цитата:
До "OpenGL" и "DirectX" мне ещё далеко...
Поэтому надо сначала осваивать стандартные приемы программирования в Дельфи.Вот смотри - в архиве демонстрационный ролик-мультик.Сделан
простым BitMap-oм, как и предлагает mflat в 16 посте.
В мультике 10 движущихся персонажей,движущийся текст и фон.
И скорость вывода вполне приемлема для такого рода анимаций.
Вложения
Тип файла: rar ManySpr.rar (675.5 Кб, 18 просмотров)
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 11.02.2009, 19:09   #23
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Да ладно, есть же движки
У меня нету, да и как ими пользоваться не представляю...
К тому же я думаю не стоит сразу лезть в "сложное", не освоив "простого"...

Просто я сейчас пытаюсь создать ScreenSaver...
Там каждый кадр рисуется по довольно сложной формуле (не помню где её вычитал) и уже потом выводится на экран...
По всей видимости ускорить уже не получится - не заставишь же Sin'усы и Cos'инусы считаться быстрее... (простые операции "+", "-", "*" и "/" не особо тормозят процесс)
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 11.02.2009, 19:26   #24
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

DomiNick, простые операции не сильно тормозят, если применены с умом, ...а вот как ты все помещаешь в буфер кадра Bitmap, через Canvas что-ли? BitBlt() только в финале должен выводить готовый кадр. Давай показывай свой код, или его часть, иначе помочь не сможем.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 11.02.2009, 20:21   #25
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
...а вот как ты все помещаешь в буфер кадра Bitmap, через Canvas что-ли?
Не совсем понял... Цикл в цикле, пробегаются все точки изображения...

Код:
...

Type
      TRGB=record
            b,g,r: Byte;
      End;
      ARGB = array[0..1] of TRGB;
      PARGB=^ARGB;

Var Bit: TBitmap;

...
Bit:=TBitmap.Create;
Bit.PixelFormat:=pf24bit;
Bit.Width:=Form1.Width;
Bit.Height:=Form1.Height;
...

Procedure Draw;
Var p: PARGB; ...
Begin
...
For y:=1 To (Form1.Height) Do
      Begin
      p:=Bit.ScanLine[y-1];
      For x:=1 To (Form1.Width) Do
            Begin
            qx:= ...
            qy:= ...
            p[x-1].r:=Trunc(Abs(qy));
            p[x-1].g:=Trunc(Abs(qx+qy));
            p[x-1].b:=Trunc(Abs(qx));
            End;
      End;
DCs:=GetDC(Form1.Handle);
BitBlt(DCs, 0, 0, Form1.Width, Form1.Height, Bit.Canvas.Handle, 0, 0, SRCCOPY);
ReleaseDC(Form1.Handle, DCs);
DeleteDC(DCs);
i:=i+1;
End;
Могу попробовать простым "Bit.Canvas.Pixels[x, y]:=RGB(Trunc(Abs(qy)), Trunc(Abs(qx+qy)), Trunc(Abs(qx)));"...
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 11.02.2009 в 20:58.
DomiNick вне форума Ответить с цитированием
Старый 11.02.2009, 23:53   #26
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Это медленно у тебя, нужно брать сразу побольше байт и обрабатывать параллельно, ...что-то конкретное написать не могу, поскольку не совсем владею математическими операциями в ассемблере, но принцип такой http://programmersforum.ru/showthread.php?t=338&page=65 пост 644.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 12.02.2009, 19:49   #27
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
не заставишь же Sin'усы и Cos'инусы считаться быстрее...
Быстрее конечно не заставишь. Но зато их можно вообще не считать. В таких случаях, а это как раз тот случай, их нужно брать из массива.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 12.02.2009, 21:03   #28
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Beermonza, вы про "Подробно про работу с графикой и MMX"..?

Почитал... Но для меня на данном этапе изучения программирования скажем так "сложноватто"... Хотя, признаться, как раз изучаю этот самый топик (и ещё три схожих топика по созданию игр на Delphi), но, разумеется, читаю с начала и до поста 644 ещё далеко...

Простейшим командам на ассемблере знакомили в институте (сложение, умножение), но в том примере практически ничего не понял (например у нас была команда "mov" - поместить значение в регистр, а там - "movq"... Это какая-то другая команда или особенность вставок Ассемблерного кода в Делфи?)

mutabor, а что значит "их нужно брать из массива"? То что в формуле "под" синусами и косинусами, а также множители перед ними всяческими способами зависят от номера кадра, координат пикселя и многого другого...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 12.02.2009, 22:01   #29
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

"0nni" научил меня подсчитывать "Время выполнения кода в миллисекундах"

Подсчитал время выполнения прорисовки "кадра" в процедуре "Draw" (от "Begin" до "DCs:=GetDC(Form1.Handle);")... Получилось примерно от "109" до "125"...

Скажите, это случаем не многовато..?


Поправка: от "109" до "125" при размере кадра 800х600... А при 1680х1050 - от "406" до "422"...
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 12.02.2009 в 22:46. Причина: Поправка
DomiNick вне форума Ответить с цитированием
Старый 12.02.2009, 22:26   #30
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Косинус - это периодическая функция и после 2пи он повторяется. Синус - это косинус сдвинутый по фазе. Обычно делают массив длиной равной степени двойки для удобства. Погугли, найдешь много интересного на эту тему.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение скрытых файлов и папок и отображение розширения всех файлов beegl Общие вопросы Delphi 10 14.12.2008 22:02
Неправильное считывание текстуры. Все размытою GamerSuper Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 08.02.2008 12:37
Неправильное отображение шрифта chingiz Общие вопросы Delphi 2 25.01.2008 18:47
Canvas Zven Общие вопросы Delphi 9 06.12.2007 10:40