|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 24, 2003 18:21:40 Здравствуйте! Спасибо всем за предыдущие ответы, они мне пригодились и помогли! У меня снова вопрос. Сделал я красивую картинку на 3D - редерил час! И хочу скрин-сейвер сделать. Каритнку эту в окно загрузить и эффект капель добавить. Но не знаю как сдлеать этот самый эффект капель. Есть пример (waterref), но там по всему экрану, а мне нужно на картинку в окне применить на картинку. И ещё - а окно ли это - скринсейвер? Буду благодарен за исходный код подобного приложения или описание принцыпа. Сам ничего понять пока не могу. Заранее спасибо! 1990 |
|
|
Дата: Авг 25, 2003 13:00:16 · Поправил: bsl_zcs Алгоритм рассчёта карты высот поверхности воды крайне прост. По сути, это блюр с вычитанием прошлого кадра и затуханием. Единственная тонкость - это контроль переполнения. Картинка 320 на 200, два буфера p1 и p2. На каждый кадр: {
// первую и последнюю строчки пропустить, чтобы за край не вылезти
for(a=320; a<(64000-640); a++)
{
// суммировать 8 точек вокруг текущей
b = p1[a-321]+p1[a-320]+p1[a-319]+p1[a-1]+p1[a+1]+p1[a+319]+p1[a+320]+p1[a +321];
// поделить на 4 и вычесть значение с прошлого кадра
c = (b>>2)-p2[a];
// проследить, чтобы не переполнилось
if(c<0) p2[a]=0;
// ввести коэффициент затухания
else p2[a] = c - (c>>6);
}
// Вывести на экран
dump(p2,VIDEO,64000);
// поменять буфера местами
t = p1; p1 = p2; p2 = t;
}
Наложение текстуры на карту высот делается дисплейсмент маппингом. Его можно делать руками, а можно сгрузить на ускоритель по сетке 8 на 8. Вот, в принципе, и всё... |
|
|
Дата: Авг 25, 2003 18:16:51 Спасибо за ответ, bsl_zcs! Всё понятно и сейчас я уже кое-что сделал! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.137 |