GI.TextureLoadFromMemory

From SunFlurry wiki
Jump to: navigation, search
  TextureLoadFromMemory (Общие функции текстур)
Объект:Атрибуты и функции текстур
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Неверные аргументы, системная ошибка.
Визуальность:Нет

Функция загружает картинку из строки или буфера в текстуру с указанным именем и параметрами и возвращает ее уникальный номер.

Синтаксис

GI.TextureLoadFromMemory(<Тип текстуры (INT)>,<Строка, картинка или буфер (STRING,BUFFER,PICTURE)>,<Свойства текстуры (INT)>=0,<Ширина картинки (INT)>,<Высота картинки (INT)>,<Имя текстуры (STRING)>=""):<Уникальный номер текстуры (INT)>

Аргументы

  • <Тип текстуры (INT)> - Аргумент задает тип загружаемой текстуры. Возможны следующие значения типа:
    • 0: 2D текстура.
    • 1: 3D текстура.
    • 2: 1D текстура.
    • 3: 2D мультиэталонная текстура.
    • 4: Текстура куба.
  • <Строка, картинка или буфер (STRING,BUFFER,PICTURE)> - Аргумент задает объект буфера, объект картинки или строку ANSI, как источник данных для загрузки.
  • <Свойства текстуры (INT)> - (необязательный аргумент) Аргумент задает дополнительные свойства загружаемой текстуры и представляет собой битовую маску. На данный момент используются следующие биты:
    • бит 0: Использовать множественное уменьшение для этой текстуры (mipmaps).
    • бит 1: Эта текстура будет сжата (compressed).
  • <Ширина картинки (INT)>,<Высота картинки (INT)> - (необязательный аргумент)(возможен аргумент-переменная (ByRef)) Аргументы-переменные возвращают ширину и высоту загруженной картинки, если в этой информации есть необходимость.
  • <Имя текстуры (STRING)> - (необязательный аргумент) Аргумент задает текстовое имя текстуры. В дальшейнем по этому имени текстуры можно искать или удалять. Если аргумент не задан, текстуре будет присвоено пустое имя.

Возвращаемое значение

Возвращается числовое значение -- системный уникальный номер текстуры для использования в других функциях.

Примеры

...

//Создадим картинку (пример взят из статьи Picture.Ellipse)
randomize;
аКартинка:=Picture.Create(500,500,toRgb(255,255,255),32);
For i:=1 to 100 Do
  x:=random(500)+1;
  y:=random(500)+1;
  d:=random*5+0.2;
  alp:=random(360);
  b:=random(300)+1;
  a:=random(300)+1;
  alpha:=random(1001);
  a1:=random(45);
  a2:=random(90)+270;

  аКартинка.Ellipse(-a+x,-b+y,a+x,b+y,,toRgb(255,0,0),d,1,alpha,radians(alp),radians(a1),radians(a2));
EndDo;

//Текстуры
Шир:=0;Выс:=0;
аТекст:=aGI.TextureLoadFromMemory(0,аКартинка,0,Шир,Выс);
...

//Добавим текст на эту текстуру
aGI.TextureUse(аТекст);
aGI.TextWorldPerspective(1);
//Выводим текст "Проверка" на текстуру, начиная с точки 10,10 в верхнем левом углу текстуры с зеленой "тенью"
aGI.RenderText("Проверка","Arial,15,B,0000FF,,1",List.Create(1,аТекст,Шир,Выс),10,10,0.5,"1,1,00FF00,2");
//Сохраним тектуру в виде файла
aGI.TextureSavePicture(аТекст,2,"c:\testtexture.png","PNG");