Как реализовать прозрачность текстуры
Немного порывшись по форуму, обнаружил что иногда некоторым начинающим разработчикам очень надо реализовать прозрачность текстуры, т.е под прозрачностью текстуры понимается что какой то определенный цвет в текстуре должен быть невидим. И в этом кратеньком уроке я научю Вас как правильно это делать.
Первым нашим шагом будет создание простого куба на который будет наложена текстура. Первым делом создаем пустой проект. И пишем:
[blitz]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,2,-5
kub=CreateCube()
kub_texture=LoadTexture("1.bmp")
Repeat
RenderWorld
Flip
Until KeyHit(1)
End
[/blitz]
Сдесь мы создали простой проект в котором на куб наклыдывается текстура. В качестве текстуры можно взять любую картинку на черном фоне). Теперь можно все это дело запустить и посмотреть на результат. Если все правильно то вы увидете куб с текстурой.
Следующий наш шаг это установка прозрачности какому либо цвету( в нашем случае это черный цвет). Затем после SetBuffer BackBuffer() и перед Repeat и перед загрузкой текстуры, прописываем следующее:
[blitz]
TextureFilter "1",4
[/blitz]
Эта команда управляет видом текстуры и еще данная команда содержит достаточно много флагов для установки параметров текстуры. А теперь поподробней рассмотрим ее синтаксис:
[blitz]
TextureFilter сдесь_указывается_имя_текстуры_без_расширения, нужный_флаг
[/blitz]
В первом параметре указывается имя текстуры( без расширения) для которой будет применяться флаг(параметр). А во втором параметре нужный флаг. Вот некоторые флаги:
1 - обычный вид текстуры
2 - прозрачность(альфа-канал)
4 - какой либо цвет становится прозрачным( по умолчанию - черный, в RGB(0,0,0))
Теперь после этого можно запустить и посмотреть на результат: черный цвет будет невидим(прозрачен).
А теперь подведем итог этого маленького урока:
Теперь читатель знает как задавать прозрачность того или иного цвета.
В большинстве игр декалы(дырки от пуль и т.п) создаются именно таким образом.
Вот весь код:
[blitz]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,2,-5
kub=CreateCube()
TextureFilter"1",4
kub_texture=LoadTexture("1.bmp")
EntityTexture kub,kub_texture
Repeat
CameraClsColor camera,100,100,100
RenderWorld
Flip
Until KeyHit(1)
End
[/blitz]
НАСЛАЖДАЙТЕСЬ!!!
P.S. Я очень надеюсь что кому-то эта статья поможет. Спасибо за внимание.
P.S.S Вот пример:
__________________
|