Texture
Класс: GLTexture
Phantom3D хранит текстуры в объектах типа Texture. Для загрузки текстур из файлов используется библиотека DevIL
(Developer's Image Library). DevIL отличается высокой скоростью работы и поддержкой огромного количества графических
форматов: BMP, CUT, ICO, JPG, JFIF, LBM, PCD, PCX, PIC, PNG, PNM, SGI, TGA, TIF, CHEAD, RAW, MDL, WAL, LIF, MNG, JNG,
DDS, DCX, PSD, EXIF, PSP, PIX, PXR, XPM, HDR.
Существует также возможность пропускать загруженные текстуры через фильтры и сохранять их. За это отвечает
сопутствующая DevIL библиотека ILU.
Для использования функций DevIL необходимо скопировать файл DevIL.dll в директорию с проектом. Для использования
функций ILU нужен еще и ILU.dll.
DevILInit
real = DevILInit( );
Инициализирует библиотеку DevIL.
DevILTextureCreate
real = DevILTextureCreate( filename as string );
Создает текстуру из файла и возвращает ее id.
filename - путь к файлу.
ILUInit
real = ILUInit( );
Инициализирует библиотеку ILU.
ILUTextureCreate
real = ILUTextureCreate( filename as string, list as real );
Загружает текстуру из файла, пропускает ее через фильтры и возвращает ее id.
Фильтр - это графический эффект: например, размытие или усиление контраста. Фильтры можно встретить
практически в любом современном графическом редакторе. Набор фильтров ILU, конечно, не сможет заменить вам
графический редактор, но все же позволит производить некоторые полезные операции над изображением.
Поддерживаемые фильтры:
(ilfNoFilter (0); 0; 0; 0) - "пустой" фильтр;
(
ilfGaussianBlur (1); iterations; 0; 0) - размытие по Гауссу (itreations - количество циклов);
(
ilfNegative (2); 0; 0; 0) - инвертирование цветов;
(
ilfEmboss (3); 0; 0; 0) - рельеф;
(
ilfAlien (4); 0; 0; 0) - эффект "Чужой";
(
ilfPixelize (5); pixsize; 0; 0) - эффект "мозаики" (pixsize - размер клетки);
(
ilfAvgBlur (6); iterations; 0; 0) - усреднение;
(
ilfEdgeDetectE (7); 0; 0; 0) - выделение края по Лапласу;
(
ilfEdgeDetectP (8); 0; 0; 0) - выделение края по Превитту;
(
ilfEdgeDetectS (9); 0; 0; 0) - выделение края по Собелу;
(
ilfSharpen (10); factor; iterations; 0) - повышение резкости (factor - сила, iterations - количество циклов);
(
ilfMirror (11); 0; 0; 0) - зеркальное отображение по горизонтали;
(
ilfContrast (12); contrast; 0; 0) - изменение контраста (contrast - контраст);
(
ilfGammaCorrect (13); gamma; 0; 0) - коррекция гаммы (gamma - гамма);
(
ilfRotate (14); angle; 0; 0) - поворот (angle - угол);
(
ilfWave (15); seed; 0; 0) - эффект волн (seed - произвольное значение);
(
ilfScale (16); width; height; depth) - изменение размера (width, height - ширина и высота в пикселях, depth - глубина цвета в битах);
(
ilfEqualize (17); 0; 0; 0) - автоматическая корректировка цвета, яркости и контраста.
filename - путь к файлу
list - список, содержащий фильтры и параметры к ним. Вы можете использовать один и тот же список
для нескольких текстур сразу.
ILUTextureCreateAndSave
real = ILUTextureCreateAndSave( filename as string, list as real, save_filename as string );
Загружает текстуру из файла, пропускает ее через фильтры, сохраняет в файл и возвращает ее id.
Сохранение возможно в форматы BMP, JPG, PCX, PNG, TGA. Если указанный файл уже существует, перезаписи не происходит.
Эта функция может понадобиться, если необходимо применить к текстуре достаточно много ресурсоемких фильтров, чтобы
затем сохранить результат для ускорения загрузки при дальнейшем использовании.
filename - путь к файлу
list - список, содержащий фильтры и параметры к ним. Вы можете использовать один и тот же список
для нескольких текстур сразу
save_filename - путь к сохраняемому файлу.