- 1
- 2
float alpha = float(m_startAlpha) + 255.0f * (getElapsed() / (m_duration * (1.0f - float(m_startAlpha) / 255.0f)));
m_target->setAlpha(static_cast<uint8_t>(alpha));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+160
float alpha = float(m_startAlpha) + 255.0f * (getElapsed() / (m_duration * (1.0f - float(m_startAlpha) / 255.0f)));
m_target->setAlpha(static_cast<uint8_t>(alpha));
Выдержка из обновления объекта-действия, производящего линейный фейд-аут объекта...
Общение с чужим говнокодом не проходит бесследно... что же я курил, перед тем как ЭТО соорудить?
Kirinyale 14.03.2011 21:25 # 0
absolut 14.03.2011 21:46 # +2
Lure Of Chaos 15.03.2011 00:23 # +4
TheCalligrapher 15.03.2011 16:58 # +1
Существуют исключения из этого принципа, не по коду выше трудно сказать, оно это или нет.
Kirinyale 20.03.2011 00:16 # 0
1) Такая точность, которую даёт float, нам нигде нафиг не нужна. Даже при отсчёте времени (таких FPS, чтобы это стало критичным, наверно, ни одна нетекстовая игра не даст).
2) DirectX по умолчанию весьма интересно ведёт себя с double, сводя любую возможную пользу от его использования к нулю.
http://chrisvall.com/coding/directx-trouble-with-double-values-rounding-offnot-returning-a-proper-precision-value-after-initializing-directx
Да, и с чего бы это вычислениям вестись в double, если я напишу что-нибудь типа (5.0f * 0.5f)?