forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Глупый вопрос (http://forum.boolean.name/showthread.php?t=7640)

Randomize 16.01.2009 01:49

Глупый вопрос
 
Вопрос такой как в один image надравить другой?
аналог B3D:
SetBuffer(ImageBuffer(SomeImage))
DrawImage Blood,someX,someY
SetBuffer(BackBuffer())

Просто в Максе я совсем недавно, ООП мне дплось на раз а вот базового ничего незнаю, вы уж простите меня.

Randomize 01.03.2009 13:20

Ответ: Глупый вопрос
 
Неужели никто не знает???

Подскажите плиз, а то метод с ReadPixel/WritePixel не улыбает.

Randomize 05.03.2009 17:51

Ответ: Глупый вопрос
 
Неужели все в 3D прогают???
Потенциал BlitzMax в 2D огромен...
Дак по сабжу может кто подсказать?
Ато он уже с бородой а отвечаю себе только я...
Плохо это както :(

Taugeshtu 05.03.2009 20:33

Ответ: Глупый вопрос
 
В голову приходит только написать бмаксовыми командами тот код, что ты написал для б3д... По идее там тоже есть работа с буферами... Попробуй, если не поможет - то даже не знаю.

NitE 05.03.2009 20:38

Ответ: Глупый вопрос
 
Цитата:

По идее там тоже есть работа с буферами
а на самом деле нет...

аффтар смотри CreateImage() LockImage() UnlockImage() LoadImage()

dimanche13 06.03.2009 00:39

Ответ: Глупый вопрос
 
Не знаю как в Б3Д, а в БМ в каждой картике есть Tpixmap-ы и указатель на данные(пиксели) и делай с ними что хочешь.

jimon 06.03.2009 00:49

Ответ: Глупый вопрос
 
плохо что в бм реализация картинок такая не продумая
по-сути каждый TImage это TPixmap и текстура в видеопамяти
зачем нам копировать пикмапы и загружать их опять в видеопамять когда можно прямиком из видеопамяти в видеопамять копировать и прогонять через какой-то шейдер ?

правда в таком случае старое железо оказывается за бортом

Randomize 06.03.2009 02:48

Ответ: Глупый вопрос
 
мде...
Тоесть циклом?
Задача проста до безумства надо надравить кровь на пол чтоб типами не загружать.
Я тут подумал об одном методе...
Надравим кровь потом грабим экран и записываем в переменную пола но это извращенство помоему.


Былаб функция DrawImageToImage(x:int,y:int,SourceImage:TImage, DestImage:TImage)
Ну попробую скрафтать.
Отчёт напишу.

jimon 06.03.2009 11:07

Ответ: Глупый вопрос
 
Randomize
тебе лень читать справку ?
юзай методы tpixmap window и paste

dimanche13 06.03.2009 11:14

Ответ: Глупый вопрос
 
"Потенциал BlitzMax в 2D огромен..." - и не только в 2Д.
"Былаб функция DrawImageToImage(x:int,y:int,SourceImage:TImage, DestImage:TImage)"
На вскидку, это делается так:
Код:

Function DrawImageToImage(x:Int,y:Int,SourceImage:TImage, DestImage:TImage)
       
        Local src_pix:TPixmap = LockImage( SourceImage )
        Local dst_pix:TPixmap = LockImage( DestImage )

        dst_pix.paste( src_pix, x, y )

End Function

по идее должно работать, не проверял.
"Надравим кровь потом грабим экран и записываем в переменную пола но это извращенство помоему." - извращенство. И вообще зачем кровь рисовать в текстуру? Можно просто сверху кинуть с альфой и все, эффект по-моему тот же.

HolyDel 06.03.2009 13:15

Ответ: Глупый вопрос
 
Нет. кровь надо рисовать в текстуру. ибо убив всего лишь 10 тыщ монстров это уже будет 10 тыщ батчей. В то время, как если кровь будет запечена в текстуру - то как была одна текстура, так одна и останется.

dimanche13 06.03.2009 14:26

Ответ: Глупый вопрос
 
HolyDel в твоих словах есть доля правды, но рендер в текстуру занятие тоже не мгновенное. К тому же никто не мешает постепенно альфой убирать кровь с экрана, а потом и стирать ее из памяти совсем, хотя бы в тех местах, где игрок уже не появится. Если же в игре 10000 монстров, то я прям не знаю, катком их чтоли давить ;) ? Кстати и отрендерив кровавый шлейф от катка в текстуру, можно написать имя любимой девушки(к примеру), а потом показывать ей скриншоты с разных ракурсов.

Randomize 06.03.2009 15:46

Ответ: Глупый вопрос
 
Примного благодарен!
Способ действенный.
* надо мне зубрить свойства обьектов в BlitzMAX. А то я даже незнаю как FreeImage сделать.

Randomize 06.03.2009 16:05

Ответ: Глупый вопрос
 
Цитата:

Сообщение от jimon (Сообщение 99726)
Randomize
тебе лень читать справку ?
юзай методы tpixmap window и paste

У меня нету справки...
вернее она не работает ибо у меня умер InternetExplorer в системе под корень.
Я использую TotalCommander вместо Explorer.exe дла лазанья по компу.
Винду переустановить не имею возможности.

Справку читаю лазая по модулям BlitzMax самим IDE.
Знаю, что сурово. Но что поделаешь.
ну вот :( я стал нуждающимся. Ах...

HolyDel 06.03.2009 16:06

Ответ: Глупый вопрос
 
dimanche13 в нормальных движках время рендера в текстуру не слишком отличается от времени рендера в бакбуфер. Если текстура декали висит в видеопамяти и текстура кровищи уровня там же - то ето тупой дип, с текстурой, в качестве рендертаргета. Ну пусть даже в два раза больше. Ну пусть даже в 20. При 20 декалях мы уже имеем выигрыш в батчах (но проигрыш в филлрейте). В играх потипу кримсоланда (в играх другого типа, где крови мало, я не вижу смысла запекать ее в текстуру) именно ТЫСЯЧИ монстров. Там каждую секунду 10-20 убийств монстров (если не больше). Там в прямом смысле - моря крови :)
Помоему там и трупики монстров запекают в текстуру. И весь смысл именно в массовости вражин. Стиль такой. и десятки тысяч декалей крови - это не фантастика, а самая настоящая реальность.


Часовой пояс GMT +4, время: 05:31.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot