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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 23.07.2010, 18:09   #1
phoenix29
AnyKey`щик
 
Аватар для phoenix29
 
Регистрация: 13.01.2009
Сообщений: 10
Написано одно полезное сообщение
Альфа канал в текстуре

Привет всем!

Сразу прошу прощение, если данный вопрос уже здесь неоднократно звучал и на него также неоднократно отвечали. Я находил конечно такие темы, но там альфа канал добавлялся в картинку, затем картинку загружали, например, как спрайт с альфа свойством и все было хорошо.

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


score_spr=CreateSprite()
SpriteViewMode score_spr,2
ScaleSprite score_spr,150,25
PositionEntity score_spr,550,1,100
TurnEntity score_spr,90,0,0

score_spr_tex=CreateTexture(300,50,2)
SetBuffer TextureBuffer(score_spr_tex)
ClsColor 254,100,254
Cls
Color 100,250,100
SetFont rusfont
Text 0,0,"1234567890"

score_spr_tex_2=CreateTexture(300,50,2)
SetBuffer TextureBuffer(score_spr_tex_2)
ClsColor 100,100,100
Cls
Color 254,254,254
SetFont rusfont
Text 0,0,"amncjoewlmn"

SetBuffer BackBuffer()
LoadAlphaChannel(score_spr_tex,score_spr_tex_2)
EntityTexture score_spr,score_spr_tex
где функция LoadAlphaChannel:

Function LoadAlphaChannel(id,tex4)
 If tex4<>0
  If TextureWidth(id)=TextureWidth(tex4)
   If TextureHeight(id)=TextureHeight(tex4)
    SetBuffer TextureBuffer(id)
    LockBuffer(TextureBuffer(tex4))
    LockBuffer(TextureBuffer(id))
    For j=0 To TextureHeight(tex4)-1
     For i=0 To TextureWidth(tex4)-1
      argb=ReadPixelFast(i,j,TextureBuffer(tex4)) And $ffffff
      r=(argb Shr 16)And $FF
      g=(argb Shr 8)And $FF
      b=argb And $FF
      grey= ((r+g+b)/3)
      If grey > 255 Then grey=255
      rgb=(ReadPixelFast(i,j,TextureBuffer(id))) And $FFFFFF
      WritePixelFast i,j,rgb Or (grey Shl 24),TextureBuffer(id)
     Next
    Next
    UnlockBuffer(TextureBuffer(tex4))
    UnlockBuffer(TextureBuffer(id))
    SetBuffer BackBuffer()
   EndIf
  EndIf
  FreeTexture tex4
 EndIf
End Function
В результате появляется полупрозрачный (Color 100,100,100) фиолетовый спрайт. Текста нету, ни в альфе ни в просто текстуре. Объясните пожалуйста почему так и где ошибки. Если это не так делается, то расскажите, как?
(Offline)
 
Ответить с цитированием
Старый 23.07.2010, 21:29   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Альфа канал в текстуре

Насколько я помню, в блице писать в альфаканал текстуры нельзя (поправьте, если не так)
Так что я бы сделал так:
На чёрном фоне писать светлым цветом.
Потом применять EntityBlend 3
Получится светящийся прозрачный текст. (я надеюсь, это поможет)
Если нет, можно маской делать, но там края рваные будут (и на память не скажу как производить шаманство, но мы с Лейто так делали в Танчиках)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
phoenix29 (23.07.2010)
Старый 23.07.2010, 23:33   #3
phoenix29
AnyKey`щик
 
Аватар для phoenix29
 
Регистрация: 13.01.2009
Сообщений: 10
Написано одно полезное сообщение
Ответ: Альфа канал в текстуре

Так что я бы сделал так:
На чёрном фоне писать светлым цветом.
Потом применять EntityBlend 3
Получится светящийся прозрачный текст. (я надеюсь, это поможет)
Помогло . Эх, я ж сам смотрел блендинг режимы, мог бы сам додуматься, да пока дурак . Спасибо большое, АВТОМАТ!
(Offline)
 
Ответить с цитированием
Старый 24.07.2010, 13:30   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Альфа канал в текстуре

Сообщение от phoenix29 Посмотреть сообщение
Помогло . Эх, я ж сам смотрел блендинг режимы, мог бы сам додуматься, да пока дурак . Спасибо большое, АВТОМАТ!
Адекватному вопросу - адекватный ответ
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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