Разделы
О сайте
Услуги
Соглашение
Проекты
FAQ
Исходники
Доки
Алгоритмы
Форматы
Download
Ссылки
Заказать
Форум
Гостевая
 
Алгоритмы

Программная генерация текстур

I. Простейшая генерация изображения ДАННАЯ ИНФОРМАЦИЯ ВЗЯТА ИЗ ЖУРНАЛА ПРОГРАММИСТ №1 ЗА 2001 ГОД. а) Точки, линии, окружности, кривые(сплайны) Случайно распределяем некоторое колличество граффических примитивов-можно одинаковых, можно разных. Для лучшего эффекта неплохо ещё менять толщину обьектов. Например: xtsize,ytsize - размеры текстуры по x и y. pset - функция, рисующая точку в текстуре int color; //цвет точки for(int n=0;n255) a=255; //проверяем на переполнение if(a<0) a=0; texbuf[x+b]=a; } } IV. Цветовые операции a) Изменение насыщенности (яркости) R,G,B - значений. После создания текстуры к ней нужно подобрать цветовую гамму, соответствующую задачам. Изменяя значение яркости, мы контролируем цветонасыщенность изображения. Обычно применяется в конце генерация слоя, но бывают и исключения. int d; int rbright,gbright,bbright; //значения насыщенности for(int n=0;n255) d=255; //проверяем на переполнение texture[n]=d; //записываем в текстуру d=texture[n+1]*gbright/100; // - // - G - значение if(d>255) d=255; texture[n+1]=d; d=texture[n+2]*bbright/100; // - // - B - значение if(d>255) d=255; texture[n+2]=d; } б) Инверсия Обычное инвертирование байт текстуры. При правельном использовании можно добиться потрясающих результатов. Например, когда надо получить "какие-нибудь другие" цвета, а изменение нассыщенности (яркости) не особо помогает. for(int n=0;n255) a=255; texture[n]=a; где n - текущий байт layer1 - основной слой layer2 - текущий (только что созданный) слой 2) Вычитание с проверкой на переполнение a=layer1[n]-layer2[n]; if(a<0) a=0; texture[n]=a; 3) Среднее значение texture[n]=(layer1[n]+layer2[n])/2; 4) Логические операции (xor,or,and) texture[n]=layer1[n]^layer2[n]; //^(xor) - можно заменить на | (or) или & (and) 5) Умножение texture[n]=layer1[n]*layer2[n]; 6) Максинг if(layer1[n]>layer2[n]) texture[n]=layer1[n]; else texture[n]=layer2[n]; Все пример, приведённые здесь, написанны на C!


 


Рейтинг@Mail.ru be number one Submitter.ru - Promoting!
Хостинг от uCoz