![]() |
Глупый вопрос
Вопрос такой как в один image надравить другой?
аналог B3D: SetBuffer(ImageBuffer(SomeImage)) DrawImage Blood,someX,someY SetBuffer(BackBuffer()) Просто в Максе я совсем недавно, ООП мне дплось на раз а вот базового ничего незнаю, вы уж простите меня. |
Ответ: Глупый вопрос
Неужели никто не знает???
Подскажите плиз, а то метод с ReadPixel/WritePixel не улыбает. |
Ответ: Глупый вопрос
Неужели все в 3D прогают???
Потенциал BlitzMax в 2D огромен... Дак по сабжу может кто подсказать? Ато он уже с бородой а отвечаю себе только я... Плохо это както :( |
Ответ: Глупый вопрос
В голову приходит только написать бмаксовыми командами тот код, что ты написал для б3д... По идее там тоже есть работа с буферами... Попробуй, если не поможет - то даже не знаю.
|
Ответ: Глупый вопрос
Цитата:
аффтар смотри CreateImage() LockImage() UnlockImage() LoadImage() |
Ответ: Глупый вопрос
Не знаю как в Б3Д, а в БМ в каждой картике есть Tpixmap-ы и указатель на данные(пиксели) и делай с ними что хочешь.
|
Ответ: Глупый вопрос
плохо что в бм реализация картинок такая не продумая
по-сути каждый TImage это TPixmap и текстура в видеопамяти зачем нам копировать пикмапы и загружать их опять в видеопамять когда можно прямиком из видеопамяти в видеопамять копировать и прогонять через какой-то шейдер ? правда в таком случае старое железо оказывается за бортом |
Ответ: Глупый вопрос
мде...
Тоесть циклом? Задача проста до безумства надо надравить кровь на пол чтоб типами не загружать. Я тут подумал об одном методе... Надравим кровь потом грабим экран и записываем в переменную пола но это извращенство помоему. Былаб функция DrawImageToImage(x:int,y:int,SourceImage:TImage, DestImage:TImage) Ну попробую скрафтать. Отчёт напишу. |
Ответ: Глупый вопрос
Randomize
тебе лень читать справку ? юзай методы tpixmap window и paste |
Ответ: Глупый вопрос
"Потенциал BlitzMax в 2D огромен..." - и не только в 2Д.
"Былаб функция DrawImageToImage(x:int,y:int,SourceImage:TImage, DestImage:TImage)" На вскидку, это делается так: Код:
Function DrawImageToImage(x:Int,y:Int,SourceImage:TImage, DestImage:TImage) "Надравим кровь потом грабим экран и записываем в переменную пола но это извращенство помоему." - извращенство. И вообще зачем кровь рисовать в текстуру? Можно просто сверху кинуть с альфой и все, эффект по-моему тот же. |
Ответ: Глупый вопрос
Нет. кровь надо рисовать в текстуру. ибо убив всего лишь 10 тыщ монстров это уже будет 10 тыщ батчей. В то время, как если кровь будет запечена в текстуру - то как была одна текстура, так одна и останется.
|
Ответ: Глупый вопрос
HolyDel в твоих словах есть доля правды, но рендер в текстуру занятие тоже не мгновенное. К тому же никто не мешает постепенно альфой убирать кровь с экрана, а потом и стирать ее из памяти совсем, хотя бы в тех местах, где игрок уже не появится. Если же в игре 10000 монстров, то я прям не знаю, катком их чтоли давить ;) ? Кстати и отрендерив кровавый шлейф от катка в текстуру, можно написать имя любимой девушки(к примеру), а потом показывать ей скриншоты с разных ракурсов.
|
Ответ: Глупый вопрос
Примного благодарен!
Способ действенный. * надо мне зубрить свойства обьектов в BlitzMAX. А то я даже незнаю как FreeImage сделать. |
Ответ: Глупый вопрос
Цитата:
вернее она не работает ибо у меня умер InternetExplorer в системе под корень. Я использую TotalCommander вместо Explorer.exe дла лазанья по компу. Винду переустановить не имею возможности. Справку читаю лазая по модулям BlitzMax самим IDE. Знаю, что сурово. Но что поделаешь. ну вот :( я стал нуждающимся. Ах... |
Ответ: Глупый вопрос
dimanche13 в нормальных движках время рендера в текстуру не слишком отличается от времени рендера в бакбуфер. Если текстура декали висит в видеопамяти и текстура кровищи уровня там же - то ето тупой дип, с текстурой, в качестве рендертаргета. Ну пусть даже в два раза больше. Ну пусть даже в 20. При 20 декалях мы уже имеем выигрыш в батчах (но проигрыш в филлрейте). В играх потипу кримсоланда (в играх другого типа, где крови мало, я не вижу смысла запекать ее в текстуру) именно ТЫСЯЧИ монстров. Там каждую секунду 10-20 убийств монстров (если не больше). Там в прямом смысле - моря крови :)
Помоему там и трупики монстров запекают в текстуру. И весь смысл именно в массовости вражин. Стиль такой. и десятки тысяч декалей крови - это не фантастика, а самая настоящая реальность. |
Ответ: Глупый вопрос
HolyDel, ты мысли читаешь.
Да игра типа кримсона будет. По кровище типа кримсона, а жанр - стратегия. Естественно от танка следы. От взрыва воронка. От металла осколки. Из пушки гильзы. От людей следы.Из врагов кравища. |
Ответ: Глупый вопрос
Цитата:
|
Ответ: Глупый вопрос
dimanche13, хм. ты прав.
вот я сделал через рендер в текстуру: http://forum.boolean.name/showpost.p...&postcount=483 |
Ответ: Глупый вопрос
давно, кстати, слежу за Sigel. Вот все кричат Xors да Xors, у тебя вроде не хуже выходит. Хотел покрутить, но не нашел информации ни о фьючерсах, ни о том что сделано, ни о том что планируется, ни сравнительных тестов с другими движками, а это не есть гуд...
|
Ответ: Глупый вопрос
dimanche13, движок-то может и лучше но кодить на С++ не все гаразды - ктомуже уж для цпп точно есть движки лучше сигела и любого другого на этом форуме...
|
Ответ: Глупый вопрос
|
Ответ: Глупый вопрос
Вложений: 2
BlitzMax хочет меня убить.
Изображение в оконном режиме трансперентится а в фуллскрине нет. Из опробываного мной: PHP код:
Привожу код для большей предметности вопроса: PHP код:
Легче так обьяснить: -- До -- Вложение 5512 -- После -- Вложение 5513 Использую OpenGL драйвер * SetGraphicsDriver GLMax2DDriver() Изображения только PNG. И ещё один вопрос: Модуль BMPLoader по любому нуже чтоли? Без него ошибка. Картинки сохранял все фотошопом. Открывал и смотрел заголовок на каждой PNG. Неужели без него в проекте никак? |
Ответ: Глупый вопрос
ну во первых, для чего тебе такая функция LoadTileBase:TImage(FileName:String, TileWidth:Int, TileHeight:Int)? Просто не грузи тайлы с рамками. Для этого уже есть LoadAnimImage и с SetMaskColor - все работает, я проверял.
|
Ответ: Глупый вопрос
Вложений: 1
Цитата:
И я нашол решение. Ширина и высота тайла получается на 2px больше. Между тайлами идут жирные линии отделяющие тайлы друг от друга. Тоесть я создаю файл наполненый прямоугольниками и заполняю прямоугольник картинкой. Просто чисто так не очень то и удобно рисовать особенно когда тайлов много и они однотипные. Как пример прикладываю изображение: Вложение 5524 Без рамки я бы просто умер. |
Ответ: Глупый вопрос
просто я не вижу необходимости разделять тайлы полосами.
|
Ответ: Глупый вопрос
Решение про накладывание изображения на изображение:
PHP код:
PHP код:
В Blitz3D подобное - расплюнуть. Я понимаю, что тут какбы 3D-2D, но ведь SetBuffer(TextureBuffer()) в B3D есть, значит и тут чёто подобное должнобыть. Просто я помню как я грабил экран в B3D и текстурил этим всю мапу и воду и скайбокс и юнитов. Баловался кароче :) |
Ответ: Глупый вопрос
Нароод!? Неужели на BlitzMax тут так мало прогают?
Не верю, что никто ничего не знает про наложение картинки на картинку. |
Ответ: Глупый вопрос
Я же тебе написал, как это делается paste методом. Потом если тебе так нравятся эти pink-полосы, то можно загрузить картинку с pink-маской порезать на тайлы с полосами, а потом просто изменить width и height картинки, отрубив таким образом остатки полос. Ты морочаешься на пустом месте. Если я прально понял.
|
Ответ: Глупый вопрос
Не сейчас я просто хочу наложить image на image.
Оставляя Alpha-канал png изображения. В моём случае наклаедываемого, хотя это не имеет значения. Должен же быть в BlitzMax для этого метод. Paste просто напросто плюёт на альфа канал. Попиксельно пробывал бррр скорость не ахти какая. |
Ответ: Глупый вопрос
Randomize
вот исходник метода Paste : Код:
Rem Код:
Function CopyPixels( in_buf:Byte Ptr,out_buf:Byte Ptr,format,count ) идинственый нормальный способ сделать то что ты хочешь это рендер в текстуру, тогда наложения картинок произойдет прямо в видеокарте и ничего делать не надо |
Ответ: Глупый вопрос
Спасибо! Ессс! Теперь я всесилен!
Великолепноm потрясающе! Ихха! Jimon, респект тебе! И 2 нет 5k опыта за выполнение квеста "Помощь Randomize". :party::party::party: * до левелапа хватило? |
Ответ: Глупый вопрос
гм...о чем это вы тут...
Я так понял кому то возможностей BlitzMAX мало? |
Ответ: Глупый вопрос
на БМ я работал с LPT и COM - портами, а так же программировал TFTP-интерфейс и еще много других хакерских заморочек, пока я не жалуюсь, он справляется со всем, что я задумываю.
|
Ответ: Глупый вопрос
Цитата:
Мало возможностей было у Basic на спектруме :) |
Ответ: Глупый вопрос
сделал анимацию обЪекта по нажатиям клавишь...
но когда происходит анимация объект движется и за ним остаёться след из частей этого обЪекта? какой алгоритм можно использовать для расположения обЪектов квадратом то есть есть один обЪект с x=0 и y=0 ,затем мне надо создать объект с координатами x=5 y=0,потом x=0 y=5 ..... и так пока не будет созданно заданное колво обЪектов.... пробовал until заданное кол-во объектов создавалось но в одно точке |
Ответ: Глупый вопрос
У тебя там цикл:
PHP код:
Если используешь While ... Wend, то после While. |
Ответ: Глупый вопрос
какой алгоритм можно использовать для расположения обЪектов квадратом
то есть есть один обЪект с x=0 и y=0 ,затем мне надо создать объект с координатами x=5 y=0,потом x=0 y=5 ..... и так пока не будет созданно заданное колво обЪектов...?. |
Ответ: Глупый вопрос
надо домнажать x и y на расстояние между обьектами
чтото типа следующего: PHP код:
|
Ответ: Глупый вопрос
For poy:int=0 to 30
For pox:int=0 to 30 ObjectCreate(pox*size,poy*size) Next Next не понял но спасибо |
Ответ: Глупый вопрос
Цитата:
Например приведи код |
Ответ: Глупый вопрос
PHP код:
|
Ответ: Глупый вопрос
Цитата:
три совета тебе: 1)изучи наконец основы алгоритмизации 2)научись выражать свои мысли 3)научись пользоваться superstrict-ом |
Ответ: Глупый вопрос
что то это меня на 4 раза зашкалило
|
Ответ: Глупый вопрос
А как пользоваться типами в ВМ? И что такое списки (TList = CreateList()
) зачем они нужны? И че то в В3D с типами проще было... |
Ответ: Глупый вопрос
|
Ответ: Глупый вопрос
SkySream, в B3D было проще, но неправильно. Можно сказать для детей. Для младшей группы детского сада.
Никакой нормальный язык не делает за программиста часть работы. А блитз делает в результате простые вещи типа ссылок на объекты реализуются чересчур черезжопным способом. Ответ на вопрос TList это двухсвязный список объектов. Очень похожий на тот что создаёт сам Блитз3Д автоматически для каждого типа. И в него же автоматически пихает. В блитзмаксе же, создать список надо нам самим (если он нужен конешно же, ведь объекты можно гранить в переменных и массивах), и самим объект в список добавить если надо. Кстати списков можно делать много а не 1 как в блитз3д. В бмаксе есть ещё более прикольные вещи типа "КАПСЫ".ToLower() |
Ответ: Глупый вопрос
Мне че то BM очень понравился даже не знаю почему :), но он что то сложноватый для моего мозга и как мне показалось для него очень мало разных статей на русском...
|
Ответ: Глупый вопрос
BlitzMax - это уникальный инструмент, таой язык я давно искал.
Обладая простым синтаксисом языка Basic он стоит на одной полке с C++ Delphi и другими мощьными современными языками программирования. Почти во все внутренние процессы можно заглянуть. Например: мне интересно что происходит при LoadImage. К BlitzMax можно подключать бесконечное множество библиотек расширяя его функционал. Кароче BlitzMax - это шедевр, созданый людьми для людей. Программерами для программеров. |
Ответ: Глупый вопрос
Цитата:
Цитата:
Цитата:
Цитата:
|
Ответ: Глупый вопрос
Цитата:
Встроенный да, только один. Цитата:
Цитата:
|
Ответ: Глупый вопрос
меньше линейности - чего все такие злые то?
|
Ответ: Глупый вопрос
Да всё пучком! Ня!
|
Ответ: Глупый вопрос
blitzmax хорош, но транслятор мудацкий и не очень очевидно работает GC
для жестких альтернативщиков могу посоветовать посмотреть на haskell (кстать мне наконец-то посоветовали нормальную IDE для линукса, конечно не vs но тоже не плохо - geany) ps. в одно время я загорелся идеей написать транслятор blitzmax -> C++ и потом компилить C++ код, плюсы такого решения очевидны - мы обходим мудацкий транслятор но лень наполнила меня, хотя в большинстве вещей blitzmax переводится в C++ простой заменой синтаксиса |
Ответ: Глупый вопрос
))
Ну по крайней мере BM нельзя сравнить с Dark Basic. |
Часовой пояс GMT +4, время: 04:51. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot