purebasic.info

PureBasic forum
Текущее время: Сб май 26, 2018 4:53 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: 2D спрайты и альфа-канал
СообщениеДобавлено: Сб фев 25, 2012 2:06 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2272
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Необходимо отобразить 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.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 25, 2012 2:50 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн сен 07, 2009 10:00 pm
Сообщений: 1046
Откуда: Николаев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Код:
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()
 


_________________
www.mirashic.narod.ru
Первое знакомство с PB


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 26, 2012 7:12 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2272
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
mirashic, благодарю. Использование одной и той же константы тоже работает:
Код:
1
2
3
  LoadSprite(#spr, "0.png", #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
  CreateSprite3D(#spr, #spr)
 


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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс фев 26, 2012 9:50 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 717
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Цитата:
Надеюсь ничего страшного не случится.

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

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 05, 2012 5:56 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2272
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Если открыть OpenWindowedScreen и Half-life (наверное другие подобные игры тоже), то программа поломается, можно ли как-нибудь исправить?

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 05, 2012 8:02 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 717
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
А Half-life в полноэкранном режиме?
Я сейчас запустил в оконном Dungeon Siege 3 и Fort Raider (WindowedScreen) - работают и переключаются нормально.

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 05, 2012 8:05 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2272
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
AndyLy писал(а):
А Half-life в полноэкранном режиме?

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

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 05, 2012 9:11 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6278
Благодарил (а): 19 раз.
Поблагодарили: 184 раз.
Пункты репутации: 48
qpAHToMAS писал(а):
можно ли как-нибудь исправить?


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

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 06, 2012 9:07 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2272
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
kvitaliy, нет же, у меня OpenWindowedScreen, т.е. экран в окне, а не полноэкранная игра.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 06, 2012 9:13 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 717
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Может Half-life сворачиваться не умеет? Это вообще мудреный процесс, не все разрабы его делают такую возможность, а если и делают, то возможны глюки. Я как-то посмотрел на оф. форуме- там такие заморочки, чтобы полный экран свернуть, что я даже читать не стал. Фактически получается надо все данные сохранить и игру заново перезапустить при развертывании.

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 06, 2012 8:31 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2272
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
AndyLy, вот кстати Half-life на сколько мне известно так и делает — она тупо делает сохранение текущего состояния игры даже для смены разрешения.
PS:
Походу я где-то читал про ограничения/рекомендацию по поводу размера спрайтов, которые загружаются через LoadSprite(), в частности — они должны быть кратны 16-и пикселям (32x64, etc.). Сейчас не могу найти этого в справке...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 06, 2012 10:24 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 717
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Цитата:
ограничения/рекомендацию по поводу размера спрайтов

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

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

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 07, 2012 12:53 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2272
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
AndyLy писал(а):
Что ты вообще делаешь? Зачем тебе при работающей полноэкранной игре запускать окно с экраном?

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

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 07, 2012 1:51 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт окт 31, 2008 4:49 pm
Сообщений: 717
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
У меня упадническое настроение, делать ничего не охота. Так что, пока, могу по мелочи помочь. Если нужно обращайся в личку или на мой форум.

_________________
мой форум http://spaceminers.mybb2.ru
Dungeon Raider (Ogre). Game video: http://www.youtube.com/watch?v=ZlhBgPJhAxI


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 11, 2013 10:46 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1610
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
засел за изучение спрайтов. я так понял вращать можно только используя Sprite3D? ну это ладно. пока вроде работает. только вот вопрос насчет вывода картинки. сейчас у меня фактически каждый раз происходит рисование картинки-вродефона, и сверху наложения еще одной - будущий объект. это нормальное явление для игр каждую секунду по сколько-то раз перерисовывать одну и туже картинку?
подумал фон влепить до repeat и после перерисовывать только объект - однако в этом случае картинка рябит. если же и фон и картинку последовательно в рипит - то тогда ничего не рябит. однако меня терзают смутные сомнения насчет пожирания ресурсов компьютера...

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

***

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


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB