Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте!!!!!!!!!!!   Найти похожие ветки 

 
>>DEATH<<   (2007-04-11 14:42) [0]

Вообшем есть tbitmap(битмапка 8х8) и tcanvas надо нарисовафон 80 на 60 из битмап..сделал перебором пикселей но рисуется долго а надо чтобы обновлялось несколько раз в секунду )))


 
MBo ©   (2007-04-11 15:15) [1]

Непонятно, почему перебором пикселов??

Tcanvas.Draw


 
>>DEATH<<   (2007-04-11 17:15) [2]


> Непонятно, почему перебором пикселов??
>
> Tcanvas.Draw
>

просто делфу не очень знаю..шас посмотрим что выйдет если делать так как ты сказал


 
>>DEATH<<   (2007-04-11 17:22) [3]

быстрее стало но всеравно не одновременно рисуется может еще что посоветуете..


 
MBo ©   (2007-04-11 17:35) [4]

var
 b: TBitmap;
begin
 b := TBitmap.Create;
 b.LoadFromFile("e:\5.bmp");
 Canvas.Brush.Bitmap := b;
 Canvas.FillRect(Rect(10, 100, 200, 200));
 b.Free;


 
>>DEATH<<   (2007-04-11 17:52) [5]

мне надо через цикл т.к. на фон используется несколько картинок из array of tbitmap,,bitmap читается с ини файла по такому принципу
arr[map.ReadInteger(inttostr(x)+";"+inttostr(y),"bm",0)]


 
MBo ©   (2007-04-11 17:56) [6]

сделай битмап нужного размера, на него нарисуй все маленькие, потом уже его на Canvas рисуй


 
@!!ex ©   (2007-04-11 19:19) [7]

Двойная буфферизация - наше все.
А лучше пользоваться BitBlt,Transparent и StretchBlt. Всяко быстрее будет работать.


 
homm ©   (2007-04-11 21:53) [8]

> А лучше пользоваться BitBlt,Transparent и StretchBlt. Всяко
> быстрее будет работать.

Хотел оспорить эуто утверждение, поскольку в KOL метод Draw состоит всего из десятка строк, но заглянул Graphics.pas и желание опровергать что либо пропало… Там даже BitBlt не используется для случая, когда размеры одинаковые, для всех случаев вызывается StretchBlt. Кашмар в общем :( Чистый API правда быстрее будет.


 
@!!ex ©   (2007-04-11 22:18) [9]

> поскольку в KOL метод Draw состоит всего из десятка строк

Всяко одна строка быстрее 10. ;)


 
ANTPro ©   (2007-04-11 23:15) [10]

> [9] @!!ex ©   (11.04.07 22:18)

API будет всегда медленней собственной (Не кривой : ) реализации.


 
@!!ex ©   (2007-04-11 23:18) [11]

> [10] ANTPro ©   (11.04.07 23:15)

Ты наверно опечатался и имел ввиду VCL или KOL всгда медленнее собственной не кривой реализации на WinAPI. ;)


 
ANTPro ©   (2007-04-11 23:34) [12]

> [11] @!!ex ©   (11.04.07 23:18)

Давай только не впутывай сюда тему VCL и KOL, а то тема на не одну сотню постов : )


> [10] ANTPro ©   (11.04.07 23:15)
> всегда

Возможно не всегда, но я видел пару реализаций на WinAPI и кода не использующего WinAPI. Дык вот WinAPI = 1x , NotWinAPI = 10x.


 
homm ©   (2007-04-12 00:32) [13]

Да что вы спорите, вызов прерывания видеокарты все равно быстрее ;)


 
>>DEATH<<   (2007-04-12 05:38) [14]

может кто код какойнить посооветует..только надо чтобы каждый раз изображение генерировалось а не сначало на тбитмап рисовалось а потом уж этот битмап на холст


 
ЮЮ ©   (2007-04-12 09:24) [15]

> только надо чтобы каждый раз изображение генерировалось
> а не сначало на тбитмап рисовалось а потом уж этот битмап
> на холст


Если обнавляь надо часто, значит положение "битмапиков" меняется. Следовательно, перед новым циклом весь канвас надо будет очистить, следовательо мерцание будет видно невооруженным глазом. Рисование на холсте невидимого битмама как раз избавит от этого. Если тебя это не беспокоит, выводи на TImage.icture.Bitmap.Canvas


 
>>DEATH<<   (2007-04-12 10:49) [16]

как примерно эт сделать..

P.S.это надо для выведения карты игры так что должно быстро и красиво обновляться


 
ЮЮ ©   (2007-04-12 11:54) [17]

Такая динамичная игра, что  карты игры обновляется несколько раз в секунду?


 
>>DEATH<<   (2007-04-12 14:21) [18]

ну всмысле не карта а фон(ну или как сказать)..по середине персонаж бегает и так далее..может это лучше на ОпенГЛ рисовать


 
Rial ©   (2007-04-12 17:51) [19]

> [18] >>DEATH<<   (12.04.07 14:21)
> ну всмысле не карта а фон(ну или как сказать)..по середине
> персонаж бегает и так далее..

Если графика двухмерная, то такое можно реализовать и
на канвасе. Самое главное, чтобы с каждый кадром
перерисовывался не весь экран, а только необходимая часть.
Двигать карту - битмап 1024*768 не получится без мерцания.
А вот нарисовать карту и двигать персонаж по ней размером 64*64 -
вполне реально, и не один.
То место, с которого персонаж сошел, догружать из картинки карты,
рисовать опять же таки только обновленный участок.

Двойная буферизация... это что
> [7] @!!ex ©   (11.04.07 19:19)
> Двойная буфферизация - наше все.

Она поможет только если картинка от кадра к кадру не сильно изменяется...
25 разных картинок за секунду с BitBlt - вряд ли что то хорошее получится.


 
homm ©   (2007-04-13 05:19) [20]

> Двигать карту - битмап 1024*768 не получится без мерцания.

Да хоть 1600х1200 с 50 кдров в секунду. Если руки есть, все получится.


 
>>DEATH<<   (2007-04-13 05:36) [21]


> Да хоть 1600х1200 с 50 кдров в секунду. Если руки есть,
> все получится.

а как примерно


 
Мистер Т   (2007-04-13 10:56) [22]

http://igdc.ru/downloads.php?cat_id=1
и в частности:
http://igdc.ru/downloads.php?cat_id=1&download_id=15

Там пример anton`a с канвасом, все работает, ни чего не мерцает.


 
homm ©   (2007-04-13 11:20) [23]

> а как примерно

Считаем. 1600*1200*50 = 275Мб/с. Это в 10 раз меньше чем скорость копирования памяти—память на моей машине, это в 15 раз меньше чем копирование видео—видео на моей машине, это даже раз в 5 меньше чем копирование память—видео. Вкратце, ключевые слова DirectX и DIB.


 
>>DEATH<<   (2007-04-14 04:23) [24]


> http://igdc.ru/downloads.php?cat_id=1
> и в частности:
> http://igdc.ru/downloads.php?cat_id=1&download_id=15
>
> Там пример anton`a с канвасом, все работает, ни чего не
> мерцает.

плохо разбираю чужие исходники дайте плиззз конкретную процедуру


 
homm ©   (2007-04-14 08:53) [25]

> плохо разбираю чужие исходники дайте плиззз конкретную процедуру

Вот, наваял специально для тебя. http://narod.ru/files/fp.rar
Формирование временного битмапа происходит в памяти, затем одной операцией копируется в видео. Для работы в памяти никакие GDI функции не использовал, слишком медленно выходило, все прямым копированием.
Получилось примерно 53 кадра в секунду на разрешении 1280*981 т.е. примерно 19 милисекунд на один кадр. примерно 6 из них на коприрование память-видео (т.е. примерно 820Мб/сек скорость прокачки(!)). Остальные 13 мс — на формирование битмапа в памяти. Так медленно видимо потому что доступ не целеком ко всем запрошеным страницам идет, системе часто приходится переключатся. В этом смысле оптимальный размер мелких картинок был бы 4096/4=1024 пикселя :) Тобиш чем крупнее мелкие картинки, тем больше производительность была бы. Сама процедура копирования FastDIBitBlt сильно заоптимизирована, но это не придел. Например можно еще ммх приплести для перемещения сразу 64-х битного значения (компилятор разбивает это действия на 2). Просто мне лень дельфю посвежее ставить, а пятая ммх инструкции не понимает. Ну и самую главную оптимизацию, которую можно бы произвести, кокретно для твоей игры — рисовать не заново все, а только те части, которые скролятся.

Кстати, проект на КОЛ, так что не пугайся. Вот офф сайт: http://kolnmck.ru


 
homm ©   (2007-04-14 09:00) [26]

ЗЫ: Для сабжевого разрешения 640х480 у меня получается 200 кадров в секунду ровно :) Надеюсь автору этого будет достаточно.


 
>>DEATH<<   (2007-04-14 09:56) [27]


> Вот, наваял специально для тебя. http://narod.ru/files/fp.
> rar

404 Нет такой страницы..залей на слил ру или кинь на 929292@mail.ru


 
homm ©   (2007-04-14 10:42) [28]

> [27] >>DEATH<<   (14.04.07 09:56)


Свой домен то и забыл подписать :)

http://homm86.narod.ru/files/fp.rar

Так работает.


 
>>DEATH<<   (2007-04-14 14:05) [29]


> Свой домен то и забыл подписать :)

я так и подумал)))))

ша буду пытаться чегонить сделать..пасиб что помог


 
>>DEATH<<   (2007-04-16 14:01) [30]

чет я не  могу найти компоненты которые ты там использовал дай ссыльци


 
homm ©   (2007-04-16 15:07) [31]

http://kolnmck.ru/files/257/kol_mck.7z

Хотя я думаю что если ты их не смог найти по прямой ссылке на головной сайт, думаю поставить тебе тоже их не удастся.


 
vegarulez ©   (2007-04-19 06:59) [32]

Используй спрайты и не парься.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.042 c
1-1173598733
RWolf
2007-03-11 10:38
2007.05.06
передача PChar в DLL


8-1156051015
Jimmy
2006-08-20 09:16
2007.05.06
Создание и использование 256-цветной палитры


8-1156510129
Der Nechk@ssoff
2006-08-25 16:48
2007.05.06
Displayrect и побочные эффекты


4-1165170629
Dmitry_177
2006-12-03 21:30
2007.05.06
Узнать высоту, ширину, цвет точки HBITMAP-а без модуля Graphics


15-1175898373
Gero
2007-04-07 02:26
2007.05.06
Шедевр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский