purebasic.info
http://purebasic.info/phpBB3ex/

2D спрайты и альфа-канал
http://purebasic.info/phpBB3ex/viewtopic.php?f=12&t=2141
Страница 1 из 2

Автор:  qpAHToMAS [ Сб фев 25, 2012 2:06 pm ]
Заголовок сообщения:  2D спрайты и альфа-канал

Необходимо отобразить 2D спрайты на WindowedScreen'е. Важное условие — поддержка у спрайтов альфа-канала, изображения хранятся в PNG.
Что мне необходимо использовать для этого? InitSprite? InitSprite3D? С какими флагами загружать спрайты?

Пробую использовать:
Код:
1
2
3
InitSprite()
InitSprite3D()
UsePNGImageDecoder()



Загружать:
Код:
1
LoadSprite(#spr, "file.png", #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)



Отображать:
Код:
1
2
3
Start3D()
DisplaySprite3D(#spr, 0, 0)
Stop3D()



Но DisplaySprite3D() выдает ошибку, мол #Sprite3D is not initialised.

Автор:  mirashic [ Сб фев 25, 2012 2:50 pm ]
Заголовок сообщения: 

Код:
1
2
3
LoadSprite(#spr, "file.png", #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CreateSprite3D(#spr3D,#spr)
 


Код:
1
2
3
4
Start3D() 
 DisplaySprite3D(#spr3D, 0, 0)
Stop3D()
 


Автор:  qpAHToMAS [ Вс фев 26, 2012 7:12 am ]
Заголовок сообщения: 

mirashic, благодарю. Использование одной и той же константы тоже работает:
Код:
1
2
3
  LoadSprite(#spr, "0.png", #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
  CreateSprite3D(#spr, #spr)
 


Надеюсь ничего страшного не случится.

Автор:  AndyLy [ Вс фев 26, 2012 9:50 am ]
Заголовок сообщения: 

Цитата:
Надеюсь ничего страшного не случится.

Не случится, 2Д спрайт с номером 1 и 3Д спрайт с номером 1- это разные вещи, по сути, ты создаешь еще один спрайт.
Следовательно, ты можешь создать кучу 3Д спрайтов из одного 2Д спрайта.
Только не забывай, при удалении спрайта (очистке памяти), если ты сделал 3Д спрайт номер 1 из 2Д спрайта номер 1, нужно делать и FreeSprite(1) и FreeSprite3D(1).

Автор:  qpAHToMAS [ Пн мар 05, 2012 5:56 pm ]
Заголовок сообщения: 

Если открыть OpenWindowedScreen и Half-life (наверное другие подобные игры тоже), то программа поломается, можно ли как-нибудь исправить?

Автор:  AndyLy [ Пн мар 05, 2012 8:02 pm ]
Заголовок сообщения: 

А Half-life в полноэкранном режиме?
Я сейчас запустил в оконном Dungeon Siege 3 и Fort Raider (WindowedScreen) - работают и переключаются нормально.

Автор:  qpAHToMAS [ Пн мар 05, 2012 8:05 pm ]
Заголовок сообщения: 

AndyLy писал(а):
А Half-life в полноэкранном режиме?

Да. Кстати, в оконном не ломает приложение :(.

Автор:  kvitaliy [ Пн мар 05, 2012 9:11 pm ]
Заголовок сообщения: 

qpAHToMAS писал(а):
можно ли как-нибудь исправить?


В общем то нормальные 2D игры, которые сворачиваются, спокойно уживаются в одновременно запущенном виде, переключаются Tab.
Если только научить PB корректно сворачивать и восстанавливать своё полноэкранное приложение то может и возможно. Где то видел на форуме способ свернуть 2D экран - может и сработает.

Автор:  qpAHToMAS [ Вт мар 06, 2012 9:07 am ]
Заголовок сообщения: 

kvitaliy, нет же, у меня OpenWindowedScreen, т.е. экран в окне, а не полноэкранная игра.

Автор:  AndyLy [ Вт мар 06, 2012 9:13 am ]
Заголовок сообщения: 

Может Half-life сворачиваться не умеет? Это вообще мудреный процесс, не все разрабы его делают такую возможность, а если и делают, то возможны глюки. Я как-то посмотрел на оф. форуме- там такие заморочки, чтобы полный экран свернуть, что я даже читать не стал. Фактически получается надо все данные сохранить и игру заново перезапустить при развертывании.

Автор:  qpAHToMAS [ Вт мар 06, 2012 8:31 pm ]
Заголовок сообщения: 

AndyLy, вот кстати Half-life на сколько мне известно так и делает — она тупо делает сохранение текущего состояния игры даже для смены разрешения.
PS:
Походу я где-то читал про ограничения/рекомендацию по поводу размера спрайтов, которые загружаются через LoadSprite(), в частности — они должны быть кратны 16-и пикселям (32x64, etc.). Сейчас не могу найти этого в справке...

Автор:  AndyLy [ Вт мар 06, 2012 10:24 pm ]
Заголовок сообщения: 

Цитата:
ограничения/рекомендацию по поводу размера спрайтов

Если не ошибаюсь, это ограничения видеокарт. Размеры кратные двум. Современным картам пофиг- они добавляют прозрачные пиксели до квадрата.

Что ты вообще делаешь? Зачем тебе при работающей полноэкранной игре запускать окно с экраном?

Автор:  qpAHToMAS [ Ср мар 07, 2012 12:53 pm ]
Заголовок сообщения: 

AndyLy писал(а):
Что ты вообще делаешь? Зачем тебе при работающей полноэкранной игре запускать окно с экраном?

Игру оконную, а то что в момент когда она была запущена запустил HL и обнаружил тот глюк — случайность.

Автор:  AndyLy [ Ср мар 07, 2012 1:51 pm ]
Заголовок сообщения: 

У меня упадническое настроение, делать ничего не охота. Так что, пока, могу по мелочи помочь. Если нужно обращайся в личку или на мой форум.

Автор:  SereZa [ Пн мар 11, 2013 10:46 pm ]
Заголовок сообщения: 

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

и плюс вопрос по Rotate - я полагаю нужно как-то определить центр картинки, вокруг которого и будет происходить вращение? коим образом это сделать? сейчас я полагаю вращение происходит от какого-то угла изображения.

***

так... походу он сам правильно выставил вращение...

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/