Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 06.03.2009, 16:09   #16
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Глупый вопрос

HolyDel, ты мысли читаешь.
Да игра типа кримсона будет.
По кровище типа кримсона, а жанр - стратегия.
Естественно от танка следы. От взрыва воронка.
От металла осколки. Из пушки гильзы.
От людей следы.Из врагов кравища.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti

Последний раз редактировалось Randomize, 06.03.2009 в 16:28.
(Offline)
 
Ответить с цитированием
Старый 06.03.2009, 17:22   #17
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Глупый вопрос

Сообщение от HolyDel Посмотреть сообщение
В играх потипу кримсоланда (в играх другого типа, где крови мало, я не вижу смысла запекать ее в текстуру) именно ТЫСЯЧИ монстров. Там каждую секунду 10-20 убийств монстров (если не больше). Там в прямом смысле - моря крови
Допустим убивать 10 монстров в секунду, что маловероятно, тока если из гранатомета их валить. И держаться в таком темпе 10 минут(мне б за 10 минут надоело), то набежало бы 6000 объектов. причем один по любасу наслоится на другой, и будет такая кровавая каша, что если убирать первых убитых монстраков, которые лежат под пятью слоями новых, никто и не заметит. Я так и делал в своем кримсоне, без всякого рендера в текстуру. Правда там и убийств в секунду было не 10...
__________________
(Offline)
 
Ответить с цитированием
Старый 06.03.2009, 21:29   #18
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Глупый вопрос

dimanche13, хм. ты прав.

вот я сделал через рендер в текстуру:
http://forum.boolean.name/showpost.p...&postcount=483
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
dimanche13 (06.03.2009)
Старый 06.03.2009, 23:22   #19
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Глупый вопрос

давно, кстати, слежу за Sigel. Вот все кричат Xors да Xors, у тебя вроде не хуже выходит. Хотел покрутить, но не нашел информации ни о фьючерсах, ни о том что сделано, ни о том что планируется, ни сравнительных тестов с другими движками, а это не есть гуд...
__________________
(Offline)
 
Ответить с цитированием
Старый 07.03.2009, 00:22   #20
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Глупый вопрос

dimanche13, движок-то может и лучше но кодить на С++ не все гаразды - ктомуже уж для цпп точно есть движки лучше сигела и любого другого на этом форуме...
(Offline)
 
Ответить с цитированием
Старый 07.03.2009, 19:38   #21
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Глупый вопрос


ни сравнительных тестов с другими движками
начало положено:
http://forum.boolean.name/showthread...newpost&t=7937

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

фичелист давно есть в основной теме:
http://forum.boolean.name/showpost.p...&postcount=422

вот справки путевой нет, да.
(Offline)
 
Ответить с цитированием
Старый 11.03.2009, 07:14   #22
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Глупый вопрос

BlitzMax хочет меня убить.
Изображение в оконном режиме трансперентится а в фуллскрине нет.
Из опробываного мной:

SetMaskColor(255,0,255)

image.mask_r=255
image
.mask_g=0
image
.mask_b=255

Флаг картинке
MASKED_IMAGE 
Картинка не хочет иметь прозрачный цвет ни в какую
Привожу код для большей предметности вопроса:

Function LoadTileBase:TImage(FileName:StringTileWidth:IntTileHeight:Int)
    
Local temp_img:TImage LoadImage (FileName)
    
Local tilex_c:Int = (ImageWidth(temp_img) / (TileWidth 2))
    
Local tiley_c:Int = (ImageHeight(temp_img) / (TileHeight 2))
    
Local TileCount:Int tilex_c tiley_c
    Local TileBase
:TImage CreateImage(tilewidthtileheightTileCount 1MASKEDIMAGE)
    
Local n:Int 0
    SetColor
(2550255)
    
DrawRect 00ImageWidth(temp_img), ImageHeight(temp_img)
    
SetColor(255255255)
    
DrawImage (temp_img00)
    For 
Local y:Int 0 To tiley_c 1
        
For Local x:Int 0 To tilex_c-1
                GrabImage TileBase
, (tilewidth 2) * 1, (tileheight 2) * 1n
                MaskPixmap
(LockImage(TileBasen), 2550255)
                
UnlockImage(TileBasen)
            
1
        Next
    Next
    Flip
;WaitKey()
    Return 
TileBase

EndFunction 
Функция загружает набор тайлов с рамкой и ликвидирует рамку.
Легче так обьяснить:
-- До --
Нажмите на изображение для увеличения
Название: b1.png
Просмотров: 802
Размер:	38.3 Кб
ID:	5512
-- После --
Нажмите на изображение для увеличения
Название: b2.png
Просмотров: 712
Размер:	38.3 Кб
ID:	5513

Использую OpenGL драйвер * SetGraphicsDriver GLMax2DDriver()
Изображения только PNG.

И ещё один вопрос: Модуль BMPLoader по любому нуже чтоли? Без него ошибка. Картинки сохранял все фотошопом. Открывал и смотрел заголовок на каждой PNG. Неужели без него в проекте никак?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 11.03.2009, 14:18   #23
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Глупый вопрос

ну во первых, для чего тебе такая функция LoadTileBase:TImage(FileName:String, TileWidth:Int, TileHeight:Int)? Просто не грузи тайлы с рамками. Для этого уже есть LoadAnimImage и с SetMaskColor - все работает, я проверял.
__________________
(Offline)
 
Ответить с цитированием
Старый 12.03.2009, 16:32   #24
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Глупый вопрос

Сообщение от dimanche13 Посмотреть сообщение
ну во первых, для чего тебе такая функция LoadTileBase:TImage(FileName:String, TileWidth:Int, TileHeight:Int)? Просто не грузи тайлы с рамками. Для этого уже есть LoadAnimImage и с SetMaskColor - все работает, я проверял.
Дело в том, что рисовать очень большие файлы с большим набором тайлов бывает крайне сложно.
И я нашол решение. Ширина и высота тайла получается на 2px больше.
Между тайлами идут жирные линии отделяющие тайлы друг от друга.
Тоесть я создаю файл наполненый прямоугольниками и заполняю прямоугольник картинкой.
Просто чисто так не очень то и удобно рисовать особенно когда тайлов много и они однотипные.
Как пример прикладываю изображение:
Нажмите на изображение для увеличения
Название: images.GIF
Просмотров: 818
Размер:	5.0 Кб
ID:	5524
Без рамки я бы просто умер.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 12.03.2009, 20:31   #25
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Глупый вопрос

просто я не вижу необходимости разделять тайлы полосами.
__________________
(Offline)
 
Ответить с цитированием
Старый 14.03.2009, 16:25   #26
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Глупый вопрос

Решение про накладывание изображения на изображение:

Graphics 800600

Explosion 
LoadImage("Картинка1")
bg LoadImage("Картинка2"DYNAMICIMAGE)


Repeat
Cls


DrawImage bg
00
If MouseHit(1)
    
DrawToPixmap(Explosion0LockImage(bg), MouseX(), MouseY())
End If

Flip
Until KeyHit
(KEY_ESCAPE)


Function 
ARGB_Alpha:Int(ARGB:Int)
 Return (
argb Shr 24) & $ff
 
'Return Int((ARGB & $FF000000:Int) / $1000000:Int) 
End Function

Function ARGB_Red:Int(ARGB:Int)
  Return (argb Shr 16) & $ff
Return Int((ARGB & $00FF0000:Int) / $10000:Int)
End Function

Function 
ARGB_Green:Int(ARGB:Int)
  Return (
argb Shr 8) & $ff
' Return Int((ARGB & $0000FF00:Int) / $100:Int)
End Function

Function ARGB_Blue:Int(ARGB:Int)
 Return (argb & $ff) 
Return (ARGB & $000000FF:Int)
End Function

Function 
ARGB_Color:Int(alpha:Int,red:Int,green:Int,blue:Int)
 Return (
Int(alpha * $1000000) + Int(RED * $10000) + Int(green * $100) + Int(blue)) 
End Function

Function 
DrawToPixmap(image:TImageframenr:Int 0Pixmap:TPixmapx:Inty:Intalpha:Float 1.0Multiply:Int 1)
      
Local TempPix:TPixmap Null
      
If framenr 0 Then TempPix LockImage(image)
      If 
framenr 0 Then TempPix LockImage(imageFramenr
      For 
Local i:Int 0 To ImageWidth(image) - 1
        
For Local j:Int 0 To ImageHeight(image) - 1
          
If pixmap.width And pixmap.Height 'And i >= x And j >= y
            Local sourcepixel:Int = ReadPixel(TempPix, i, j) 
            Local destpixel:Int = ReadPixel(pixmap, x+i,y+j)
            Local destA:Float = ARGB_Alpha(destpixel) 
            Local sourceA:Float = ARGB_Alpha(sourcepixel) * alpha
            If sourceA = 255 Then destA = 0
                Local destR:Float = ARGB_Red(destpixel)
                Local destG:Float = ARGB_Green(destpixel) 
                Local destB:Float = ARGB_Blue(destpixel) 
                Local SourceR:Float = ARGB_Red(Sourcepixel) 
                Local SourceG:Float = ARGB_Green(Sourcepixel) 
                Local SourceB:Float = ARGB_Blue(Sourcepixel) 
                    Local AlphaSum:Int = destA + sourceA
                    If multiply = 1
                        sourceR = (sourceR  * sourceA / AlphaSum) + destA / AlphaSum * (destR * destA / AlphaSum) 
                        sourceG = (sourceG  * sourceA / AlphaSum) + destA / AlphaSum * (destG * destA / AlphaSum) 
                        sourceB = (sourceB  * sourceA / AlphaSum) + destA / AlphaSum * (destB * destA / AlphaSum) 
                    Else
                        sourceR = (sourceR  * sourceA / AlphaSum) + (destR * destA / AlphaSum) 
                        sourceG = (sourceG  * sourceA / AlphaSum) + (destG * destA / AlphaSum) 
                        sourceB = (sourceB  * sourceA / AlphaSum) + (destB * destA / AlphaSum) 
                    EndIf
                    If AlphaSum > 255 Then AlphaSum = 255
                    sourcepixel = ARGB_Color(AlphaSum, SourceR, sourceG, sourceB) 
            If SourceA <> 0 Then WritePixel(Pixmap, x + i, y + j, sourcepixel)
          EndIf
        Next
      Next
      If framenr = 0 UnlockImage(image)
      If framenr > 0 UnlockImage(image, framenr)
End Function 
Этот способ ещё тормознее и без alpha канала:
Local e:TPixmap LockImage(imgBlood)
    
Local p:TPixmap LockImage(imgFloor)
    
MaskPixmap(e000)
    
p.Paste(eMouseX(), MouseY())
    
UnlockImage(imgBlood)
    
UnlockImage(imgFloor
Нужели это всё, что можно сделать?
В Blitz3D подобное - расплюнуть.
Я понимаю, что тут какбы 3D-2D, но ведь SetBuffer(TextureBuffer()) в B3D есть, значит и тут чёто подобное должнобыть.
Просто я помню как я грабил экран в B3D и текстурил этим всю мапу и воду и скайбокс и юнитов. Баловался кароче
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti

Последний раз редактировалось Randomize, 14.03.2009 в 19:31.
(Offline)
 
Ответить с цитированием
Старый 17.03.2009, 21:56   #27
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Глупый вопрос

Нароод!? Неужели на BlitzMax тут так мало прогают?
Не верю, что никто ничего не знает про наложение картинки на картинку.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 17.03.2009, 23:35   #28
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Ответ: Глупый вопрос

Я же тебе написал, как это делается paste методом. Потом если тебе так нравятся эти pink-полосы, то можно загрузить картинку с pink-маской порезать на тайлы с полосами, а потом просто изменить width и height картинки, отрубив таким образом остатки полос. Ты морочаешься на пустом месте. Если я прально понял.
__________________
(Offline)
 
Ответить с цитированием
Старый 18.03.2009, 08:09   #29
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Глупый вопрос

Не сейчас я просто хочу наложить image на image.
Оставляя Alpha-канал png изображения.
В моём случае наклаедываемого, хотя это не имеет значения.
Должен же быть в BlitzMax для этого метод. Paste просто напросто плюёт на альфа канал.
Попиксельно пробывал бррр скорость не ахти какая.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 18.03.2009, 09:16   #30
jimon
 
Сообщений: n/a
Ответ: Глупый вопрос

Randomize
вот исходник метода Paste :
	Rem
	bbdoc: Paste a pixmap
	end rem
	Method Paste( source:TPixmap,x,y )
		For Local h=0 Until source.height
			ConvertPixels source.PixelPtr(0,h),source.format,Self.PixelPtr(x,y+h),Self.format,source.width
		Next
	End Method
а функция ковертации пикселей
Function CopyPixels( in_buf:Byte Ptr,out_buf:Byte Ptr,format,count )
	MemCopy out_buf,in_buf,count*BytesPerPixel[format]
End Function

Function ConvertPixels( in_buf:Byte Ptr,in_format,out_buf:Byte Ptr,out_format,count )
	If in_format=out_format
		CopyPixels in_buf,out_buf,out_format,count
	Else If in_format=PF_STDFORMAT
		ConvertPixelsFromStdFormat in_buf,out_buf,out_format,count
	Else If out_format=PF_STDFORMAT
		ConvertPixelsToStdFormat in_buf,out_buf,in_format,count
	Else
		Local tmp_buf:Int[count]
		ConvertPixelsToStdFormat in_buf,tmp_buf,in_format,count
		ConvertPixelsFromStdFormat tmp_buf,out_buf,out_format,count
	EndIf
End Function
это означает некоторые вещи, к примеру то что если у конечного пиксмапа не будет альфа канала то конечно при копировании альфа канал пропадёт и еще означает то что картинка не рисуется поверх, а тупо заменяются пиксели

идинственый нормальный способ сделать то что ты хочешь это рендер в текстуру, тогда наложения картинок произойдет прямо в видеокарте и ничего делать не надо
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (18.03.2009)
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос Черный крыс BlitzMax 1 31.03.2009 09:30
Глупый вопрос но задам. magpro 3D-программирование 3 30.05.2007 23:22
16 битный рижим. ЛысыЙ_Чук-Иванчук 3D-программирование 2 17.07.2006 17:15


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com