Введение в программирование трехмерных игр с DX9



Окно программы Firework - часть 2


i->_age += timeDelta;

if(i->_age > i->_lifeTime) // убиваем i->_isAlive = false; } } }

Система фейерверка при визуализации использует собственные коэффициенты смешивания. Кроме того, она еще и запрещает запись в буфер глубины. Мы можем легко изменить коэффициенты смешивания и запретить запись в буфер глубины путем переопределения методов PSystem::preRender и PSystem::postRender. Вот переопределенная реализация:

void Firework::preRender() { PSystem::preRender();

_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE); _device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);

// Не записываем частицы в z-буфер _device->SetRenderState(D3DRS_ZWRITEENABLE, false); }

void Firework::postRender() { PSystem::postRender();

_device->SetRenderState(D3DRS_ZWRITEENABLE, true); }

Обратите внимание, что оба метода вызывают одноименные методы родительского класса. Это позволяет использовать всю предлагаемую родительским классом функциональность, оставив в классе Firework только минимум кода, требуемый для данной конкретной системы частиц.




Содержание  Назад  Вперед