| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Эффект воды |
| Автор: Annuta 3.9.2007, 22:40 |
| Подскажите пожаста, у меня есть текст, который я отображаю на форме /в едите/, каким способом проще всего осуществить его смену "эффектом воды"... Т.е. поялвяется текст.. на 1 минуту, затем "волнами бликами" становится прозрачным... поялвяется другой текст... Что лучше использовать - что проще ? Может где почитать ? |
| Автор: ZeroMem 10.9.2007, 17:31 |
| Эээ... ну так сразу сложно сказать. Но я бы сделал это через шейдеры на DirectX. Но это уже изврат я так думаю. Вообще, мысль есть такая. Вот тебе надо одну надпись на другую сменить. Сделай так. Ты зарисуй в памяти эти надписи, просто отрисуй в некоторые 2 картинки одинакового размера. А далее уже как ты хочешь чтобы твое "водное перетикание" шло. Воспользуемся физикой. Примем некоторый волновой закон, вида y = A*sin(kx [+ phi]) за истинный для твоей волны. Далее, проходя по всей картинки нужно смешивать цветовые компоненты пикселя с учетом этого закона. То есть берешь где-нибудь точку (x0, y0) и считаешь, что это у тебя источник волновых колебаний. В зависимости от удаленности (можно по т. Пифагора ее посчитать) от источника, получаешь y. Далее простая пропорция: A - текущая компонента цвета. y - новая компонента цвета. => (новая компонента цвета) = y * (текущая компонента цвета) / A. Амплитуду A можно просто подобрать. |
| Автор: Annuta 2.10.2007, 10:51 |
| ...Спасибо! ...Да тут видно без физики никуда!!! Буду думать! |