Показать сообщение отдельно
Старый 28.10.2007, 15:22   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Счастье Как реализовать прозрачность текстуры

Немного порывшись по форуму, обнаружил что иногда некоторым начинающим разработчикам очень надо реализовать прозрачность текстуры, т.е под прозрачностью текстуры понимается что какой то определенный цвет в текстуре должен быть невидим. И в этом кратеньком уроке я научю Вас как правильно это делать.
Первым нашим шагом будет создание простого куба на который будет наложена текстура. Первым делом создаем пустой проект. И пишем:

[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 Вот пример:
__________________

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