|
Ivan Mahonin |
cece70 |
<html>
|
|
Ivan Mahonin |
cece70 |
<head>
|
|
Ivan Mahonin |
cece70 |
<meta charset="UTF-8" />
|
|
Ivan Mahonin |
cece70 |
<link rel="stylesheet" type="text/css" href="style.css" />
|
|
Ivan Mahonin |
cece70 |
<title>Текстуры и анимация - Helianthus</title>
|
|
Ivan Mahonin |
cece70 |
</head>
|
|
Ivan Mahonin |
cece70 |
<body>
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
77a314 |
Helianthus
|
|
Ivan Mahonin |
77a314 |
|
|
Ivan Mahonin |
77a314 |
Helianthus: Документация
|
|
Ivan Mahonin |
77a314 |
Установка
|
|
Ivan Mahonin |
cece70 |
Запуск и общие функции
|
|
Ivan Mahonin |
cece70 |
Клавиатура и мышь
|
|
Ivan Mahonin |
cece70 |
Рисование
|
|
Ivan Mahonin |
cece70 |
Шрифты и текст
|
|
Ivan Mahonin |
cece70 |
Текстуры и анимация
|
|
Ivan Mahonin |
cece70 |
Буфер кадра
|
|
Ivan Mahonin |
cece70 |
Спрайты
|
|
Ivan Mahonin |
cece70 |
Группы спрайтов
|
|
Ivan Mahonin |
cece70 |
Звук
|
|
Ivan Mahonin |
e9aada |
Пользовательский интерфейс
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Все функции
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Текстуры и анимация
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Библиотека Helianthus позволяет вам загружать и использовать в ваших программах различные изображения (текстуры) из файлов PNG. Также вы можете использовать анимированные текстуры — для создания анимации нужно все кадры в формате PNG разместить в одной папке и указать эту папку в качестве имени файла для загрузки. Для вашего удобства и сокращения количества используемых функций и одиночная текстура и анимация представлены в Helianthus в качестве одного и того же типа объектов — это всё анимации. Просто для одиночной текстуры количество кадров анимации равно одному. Количество кадров для загруженной анимации можно узнать при помощи функции animationGetFramesCount.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Чтобы загрузить текстуру используйте функцию createAnimation, которая возвращает значение типа Animation, которое по сути является адресом в памяти — указателем на описание текстуры внутри библиотеки Helianthus. Библиотека запоминает пути к загружаемым файлам, и, в случае многократной загрузки одного и того же файла не расходует лишнюю память, а работает лишь с одной копией изображения. Это изображение будет выгружено из памяти в тот момент когда будет удалена (animationDestroy) последняя использующая его анимация.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Помимо загрузки анимации из папки вы можете скомпоновать анимацию из отдельных кадров при помощи функций createAnimationEmpty, animationInsert, animationRemove, animationClear.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Анимация загружается установленной на паузу — то есть по-умолчанию она не воспроизводится. Запустить воспроизведение можно функцией animationPlay, снова поставить на паузу — animationPause. Кроме того анимация по-умолчанию зациклена, то есть когда она проиграет до конца — она сразу же начинается сначала. Вы можете это изменить используя функцию animationSetLoop.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
d38577 |
Ещё один важный параметр анимации это скорость её воспроизведения. По-умолчанию она равна общей частоте перерисовки кадров (см. windowSetFrameRate), но если задан диапазон частоты — переменная частота кадров (windowSetFrameRateEx), то берётся значение из этого диапазона ближайшее к 24 кадрам в секунду. Если вас это не устраивает, задайте свою частоту смены кадров функцией animationSetFps.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Вы можете и вручную управлять воспроизведением анимации — используйте функции animationNextFrame, animationSetFrame, animationAddTime и animationSetPos.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Текстуры и анимации описанные выше — это уже загруженные на видеокарту данные и читать или менять пиксели в них нельзя. Для того чтобы работать с пикселями напрямую вам нужно загрузить их в оперативную память из файла — imageLoad, из текстуры — imageFromGLTexture и animationGetGLTexId или из пикселей на экране — imageFromViewport.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
В отличие от анимации данные изображения не сгруппированы в структуру, а представлены в виде трёх отдельных переменных: ширина изображения, высота изображения и указатель на данные — массив пикселей. Данные это простая последовательность байтов — пикселив них записаны по строкам сверху вниз слева направо. Каждый пиксель — это четыре байта в формате RGBA — красный, зелёный, синий и непрозрачность (alpha). Для хранения этих данных выделяется оперативная память и прежде чем закончить с ними работу и забыть нужно эту память освободить функцией free из стандартного модуля <stdlib.h>. Сложновато? Да. Но ведь это низкоуровневые функции и прибегать к ним вам придётся только в редких случаях — если вам не хватило базового функционала.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Читать и записывать отдельные пиксели можно либо вручную высчитав номера отдельных байтов или при помощи функций imageGetPixel, imageSetPixel — которые сделают эти вычисления за вас.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Полученное изображение можно сохранить в файл — imageSave, отправить на видеокарту в виде текстуры OpenGL — imageToGLTexture или создать из изображения однокадровую анимацию — createAnimationFromImage.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Вот пример работы с изображениями:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
// Все три переменные представленные ниже
|
|
Ivan Mahonin |
cece70 |
// необходимы для работы с одним единственным изображением.
|
|
Ivan Mahonin |
cece70 |
// Если вы захотите работать одновременно с двумя изображениями,
|
|
Ivan Mahonin |
cece70 |
// то вам придётся завести дополнительную
|
|
Ivan Mahonin |
cece70 |
// тройку аналогичных переменных.
|
|
Ivan Mahonin |
cece70 |
int width = 0, height = 0; // Сюда будут записаны
|
|
Ivan Mahonin |
cece70 |
// ширина и высота изображения.
|
|
Ivan Mahonin |
cece70 |
void *data = NULL; // Это указатель на данные изображения,
|
|
Ivan Mahonin |
cece70 |
// пока он указывает в никуда.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
// Попытаемся загрузить изображения
|
|
Ivan Mahonin |
cece70 |
// будьте готовы к тому, что это не всегда удастся -
|
|
Ivan Mahonin |
cece70 |
// вдруг кто-то удалит файл, например.
|
|
Ivan Mahonin |
cece70 |
if (imageLoad("image.png", &width, &height, &data)) {
|
|
Ivan Mahonin |
cece70 |
// Ура! Файл существует и нам даже удалось его загрузить.
|
|
Ivan Mahonin |
cece70 |
// Поставим синий пиксель в координатах 10, 2.
|
|
Ivan Mahonin |
cece70 |
// Если, конечно, в загруженном изображении
|
|
Ivan Mahonin |
cece70 |
// есть эти координаты.
|
|
Ivan Mahonin |
cece70 |
if (width > 10 && height > 2)
|
|
Ivan Mahonin |
cece70 |
imageSetPixel(data, 10, 2, colorByName("blue"));
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
// Сохраним изображение в другой файлы
|
|
Ivan Mahonin |
cece70 |
// будьте осторожны если такой файл уже существует,
|
|
Ivan Mahonin |
cece70 |
// то он будет перезапиан!
|
|
Ivan Mahonin |
cece70 |
imageSave("image2.png", width, heigh, data);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
// Мы закончили работу с изображением -
|
|
Ivan Mahonin |
cece70 |
// нужно освободить выделенную для его данных память.
|
|
Ivan Mahonin |
cece70 |
free(data);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
// Обнулим указатель на данные. Это необязательно,
|
|
Ivan Mahonin |
cece70 |
// просто на всякий случай. Это немножко защитит нас
|
|
Ivan Mahonin |
cece70 |
// от наших ошибок. Если мы вдруг попытаемся использовать
|
|
Ivan Mahonin |
cece70 |
// нулевой указатель, то в большинстве случаев увидим
|
|
Ivan Mahonin |
cece70 |
// явную ошибку и её источник. И сможем её исправить.
|
|
Ivan Mahonin |
cece70 |
// Использование же ненулевого указателя на уже
|
|
Ivan Mahonin |
cece70 |
// освобождённую память приведёт к совершенно
|
|
Ivan Mahonin |
cece70 |
// не предсказуемым ошибкам в совсем других
|
|
Ivan Mahonin |
cece70 |
// частях программы.
|
|
Ivan Mahonin |
cece70 |
data = NULL;
|
|
Ivan Mahonin |
cece70 |
} else {
|
|
Ivan Mahonin |
cece70 |
// Не удалось загрузить изображение,
|
|
Ivan Mahonin |
cece70 |
// возможно файла нет или он есть, но повреждён,
|
|
Ivan Mahonin |
cece70 |
// или ещё что-то случилось.
|
|
Ivan Mahonin |
cece70 |
// Сообщим-ка пользователю об этой проблеме.
|
|
Ivan Mahonin |
cece70 |
printf("Ничего не получилось, увы :(");
|
|
Ivan Mahonin |
cece70 |
}
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Есть ещё несколько функций, которые могут вас заинтересовать — создание однокадровой анимации прямо из пикселей экрана или буфера кадра: createAnimationFromViewport, createAnimationFromFramebuffer. Сохранить снимок экрана (окна программы) в файл — viewportSave.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функции:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimation(const char *path);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Загрузить текстуру из файла PNG или цепочку кадров в формате PNG из папки. Эквивалентно вызову createAnimationEx. со включенным сглаживанием (smooth) и отключенными повторами (horWrap, vertWrap).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
path — путь к файлу или папке.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationEx(const char *path, int smooth, int horWrap, int vertWrap);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Загрузить текстуру из файла PNG или цепочку кадров анимации в формате PNG из папки.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
d38577 |
Если в качестве пути указана папка, из неё будут загружены все изображения и отсортированы в алфавитном порядке. Частота кадров для вновь созданной анимации будет равна частоте перерисовки экрана (windowSetFrameRate). Если задан диапазон частоты (windowSetFrameRateEx), то из этого диапазона будет выбрана частота ближайшая к 24-м кадрам в секунду.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Если файл не удалось загрузить файл(ы), то функция вернёт анимацию с нулевым количеством кадров.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Helianthus запоминает пути к загружаемым файлам, и, в случае многократной загрузки одного и того же файла не расходует лишнюю память, а работает лишь с одной копией изображения. Это изображение будет выгружено из памяти в тот момент когда будет удалена (animationDestroy) последняя использующая его анимация.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Если параметр smooth равен TRUE, то загруженная текстура будет отображаться сглаженной — вы не увидите резких переходов между пикселями (трилинейная фильтрация).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры horWrap и vertWrap включают (TRUE) или выключают (FALSE) бесконечное повторение узора текстуры по горизонтали и вертикали соответственно.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также createAnimation, createAnimationFromImage, createAnimationFromViewport, createAnimationFromGLTexId, createAnimationEmpty, animationClone.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
path — путь к файлу или папке;
|
|
Ivan Mahonin |
cece70 |
smooth — включить сглаживание (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
horWrap — включить бесконечное повторение узора текстуры по горизонтали (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
vertWrap — включить бесконечное повторение узора текстуры по горизонтали (TRUE или FALSE).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationFromGLTexId(unsigned int texid);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать однокадровую анимацию из текстуры OpenGL. Будьте внимательны, не удаляйте текстуру из OpenGL (glDeteteTextures) до тех пор пока существует хотя бы одна анимация её использующая. И более того анимация при своём удалении сама удалит эту текстуру из OpenGL. Если вы создали несколько анимаций с одной и той же текстурой, то текстура будет удалена при удалении последней использующей её анимации. Вы можете отключить автоматическое удаление текстуры обратившись к функции animationGLTexIdSetOwnership.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Настройки повторения узора текстуры и сглаживания уже содержатся в текстуре OpenGL.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См.также animationGetGLTexId.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
texid — идентификатор текстуры из OpenGL.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationFromImage(int width, int height, const void *pixels, int wrap);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать однокадровую анимацию из изображения в памяти. Пиксели должны идти один за другим по строкам сверху вниз, слева на право. По 4 байта на пиксель, по одному байту на каждый из каналов: красный, зелёный, синий, альфа каналы, именно в таком порядке. При загрузке создаётся копия текстуры в видеопамяти, и исходные данные больше не требуются, их можно выгрузить из памяти.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Текстура загружается со включенным сглаживанием (smooth). См. также createAnimationFromImageEx, createAnimationEx, imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на первый байт первого пикселя в формате RGBA32;
|
|
Ivan Mahonin |
cece70 |
wrap — включить бесконечное повторение узора текстуры во всех направлениях (TRUE или FALSE).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationFromImageEx(int width, int height, const void *pixels, int horWrap, int vertWrap, int smooth, int mipMap);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать однокадровую анимацию из изображения в памяти. Пиксели должны идти один за другим по строкам сверху вниз, слева на право. По 4 байта на пиксель, по одному байту на каждый из каналов: красный, зелёный, синий, альфа каналы, именно в таком порядке. При загрузке создаётся копия текстуры в видеопамяти, и исходные данные больше не требуются, их можно выгрузить из памяти.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Вы можете включить или выключить бесконечное повторение узора текстуры по горизонтали и/или вертикали (параметры horWrap и vertWrap соответственно).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Также вы можете включить сглаживание пикселей изображения (smooth) и включить построение mip-уровней (mipMap). Если вы пока не знаете, что такое mip-уровни, то просто включайте их всегда, когда нужно сглаживание и выключайте, когда сглаживание не нужно. Если же вы не знаете требуется или нет вам сглаживание текстуры, то ответ один — требуется — включайте и сглаживание и mip-уровни.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также createAnimationFromImage, createAnimationFromImageEx, createAnimationEx, imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на первый байт первого пикселя в формате RGBA32;
|
|
Ivan Mahonin |
cece70 |
horWrap — включить бесконечное повторение узора текстуры по горизонтали (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
vertWrap — включить бесконечное повторение узора текстуры по вертикали (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
smooth — включить сглаживание (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
mipMap — включить построение mip-уровней (TRUE или FALSE).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationFromFramebuffer(Framebuffer framebuffer);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать новую динамическую текстуру связанную с заданным буфером кадра. Содержимое этой текстуры будет изменяться всякий раз когда вы рисуете в этом буфере кадра. Мгновенно, без каких либо дополнительных затрат на копирование. Дополнительную информацию смотрите в разделе «Буфер кадра».
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Не удаляйте буфер кадра пока не удалите все связанные с ним анимации.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Если вам нужно зафиксировать именно копию текущего состояния буфера кадра, то используйте функцию createAnimationFromViewport в сочетании с функцией target.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
framebuffer — буфер кадра.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationFromViewport();
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать новую текстуру (однокадровую анимацию) скопировав изображение с экрана.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Если точнее — из текущей области вывода OpenGL (glViewport) — обычно это и есть вся площадь окна. Но если вы переключили буфер кадра функцией target, то текстура будет взята из этого буфера кадра.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Текстура создаётся с выключенным повтором узора, но со включенным сглаживанием и mip-уровнями.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также createAnimationFromViewportEx, createAnimationFromFramebuffer, viewportByWindow, viewportByFramebuffer и раздел «Буфер кадра».
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationFromViewportEx(int horWrap, int vertWrap, int smooth, int mipMap);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция работает аналогично функции createAnimationFromViewport, но позволяет вам задать повторения узора текстуры по горизонтали и/или вертикали (параметры horWrap, vertWrap) и включить или выключить сглаживание (smooth) и mip-уровни. Подробнее обо всех этих параметрах смотрите в описании функции createAnimationFromImageEx.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
horWrap — включить бесконечное повторение узора текстуры по горизонтали (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
vertWrap — включить бесконечное повторение узора текстуры по вертикали (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
smooth — включить сглаживание (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
mipMap — включить построение mip-уровней (TRUE или FALSE).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation createAnimationEmpty();
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать пустую анимацию — анимацию с нулевым количеством кадров. См. также animationInsert.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationDestroy(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Удалить анимацию.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Важно: Скорее всего у вас в программе останется переменная в которой хранился указатель на анимацию. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на анимацию, анимацию уже удалена. Вы можете занести в эту переменную другую анимацию, но использовать старое значение переменной больше нельзя это приведёт к ошибкам и непредсказуемому поведению программы.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation animationClone(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать копию анимации, которая будет иметь собственные параметрами позиции воспроизведения и частоты кадров. Функция не размножает копии изображений в оперативной памяти — все клоны ссылаются на одни те же изображения. Библиотека Helianthus контролирует сколько анимаций используют конкретный кадр в данный момент времени и выгружают этот кадр из памяти только тогда, когда удалена последняя анимация его использовавшая.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См.также animationCloneEx, animationInsert.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Animation animationCloneEx(Animation animation, int start, int count);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать копию анимации, которая будет иметь собственные параметрами позиции воспроизведения и частоты кадров. При помощи параметров start и count вы выбираете какие именно кадры из заданной анимации будут скопированы в новую анимацию. См. также animationClone, animationInsert.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
start — порядковый номер кадра с которого нужно начать копирование (нумерация от нуля);
|
|
Ivan Mahonin |
cece70 |
count — количество кадров, которое нужно скопировать.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
unsigned int animationGetGLTexId(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция возвращает внутренний идентификатор текстуры OpenGL для текущего кадра анимации. См.также animationGetFrameGLTexId, animationGetFrame, createAnimationFromGLTexId.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
unsigned int animationGetFrameGLTexId(Animation animation, int frame);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция возвращает внутренний идентификатор текстуры OpenGL для заданного кадра анимации. См.также animationGetGLTexId, createAnimationFromGLTexId.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
frame — порядковый номер кадра с для которого нужно получить идентификатор (нумерация от нуля);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationGLTexIdSetOwnership(unsigned int texid, int own);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция задаёт правила удаления текстуры с заданным идентификатором из OpenGL. Определяет кто является владельцем текстуры — библиотека Helianthus или ваша собственная программа. Если текстурой владеет Helianthus (own — TRUE), то текстуру из OpenGL удалит Helianthus сам в том момент когда ни одна анимация больше не будет на неё ссылаться. В противном случае вы сами должны позаботиться об удалении текстуры, проконтролировав при этом, что ни одна анимация больше эту текстуру не использует.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Используйте эту функцию если, например, вы не хотите чтобы Helianthus удалил из памяти вашу собственную текстуру, которую вы ему передали через функцию createAnimationFromGLTexId.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
texid — внутренный идентификатор текстуры OpenGL;
|
|
Ivan Mahonin |
cece70 |
own — если TRUE, то об удалении текстуры из видео-памяти позаботится Helianthus, если FALSE, то удалить текстуру должена будет ваша программа.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int animationGetFramesCount(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Возвращает количество кадров в данной анимации.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationInsert(Animation animation, int index, Animation other);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Вставить все кадры из анимации other в заданную анимацию, таким образом, что бы вновь вставленные кадры начинались с номера index.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция не затирает старые кадры, а вставляет новые прямо в середину анимации, сдвигая при этом последние кадры.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также animationInsertEx, animationCloneEx.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
index — определяет место (номер кадра, нумерация от нуля) в текущей анимации куда нужно вставить новые кадры;
|
|
Ivan Mahonin |
cece70 |
other — другая анимация кадры из которой нужно вставить в текущую.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationInsertEx(Animation animation, int index, Animation other, int start, int count);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Вставить некоторое количество подряд идущих кадров из анимации other в заданную анимацию, таким образом, что бы вновь вставленные кадры начинались с номера index.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция не затирает старые кадры, а вставляет новые прямо в середину анимации, сдвигая при этом последние кадры.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также animationInsert, animationCloneEx.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
index — определяет место (номер кадра, нумерация от нуля) в текущей анимации куда нужно вставить новые кадры;
|
|
Ivan Mahonin |
cece70 |
other — другая анимация кадры из которой нужно вставить в текущую;
|
|
Ivan Mahonin |
cece70 |
start — номер вставляемого первого кадра из другой анимации;
|
|
Ivan Mahonin |
cece70 |
count — количество кадров для вставки.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationRemove(Animation animation, int start, int count);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Удалить некоторое количество (count) кадров из анимации начиная с кадра номер start.
|
|
Ivan Mahonin |
cece70 |
См. также animationInsert, animationClear.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
start — номер первого удаляемого кадра (нумерация с нуля);
|
|
Ivan Mahonin |
cece70 |
count — количество кадров для вставки.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationClear(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Удалить все кадры из анимации. См. также animationRemove, animationInsert, createAnimationEmpty.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
double animationGetFps(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Возвращает скорость воспроизведения анимации в кадрах в секунду. См. также animationSetFps, animationPlay.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationSetFps(Animation animation, double fps);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Устанавливает скорость воспроизведения анимации в кадрах в секунду. См. также animationGetFps, animationPlay.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int animationIsPlaying(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Возвращает TRUE если воспроизведение в данный момент включено и FALSE если выключено. См. также animationPlay, animationPause.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationPlay(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
d38577 |
Включает воспроизведение анимации. Внутренний счётчик времени будет автоматически обновляться библиотекой Helianthus между вызовами функции перерисовки кадра (windowSetDraw).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Если вы хотите управлять анимацией вручную, то не вызывайте эту функцию, а воспользуйтесь функциями animationAddTime, animationSetPos, animationNextFrame, animationSetFrame.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также animationPause, animationIsPlaying, animationSetFps, animationSetLoop.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationPause(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Остановить воспроизведение анимации. См. также animationPlay, animationIsPlaying.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationAddTime(Animation animation, double time);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Увеличить позицию анимации на время time (в секундах). См. также animationPlay, animationSetLoop, animationSetPos, animationNextFrame, animationSetFrame.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int animationGetLoop(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Возвращает TRUE если анимация зациклена и FALSE если нет. См. также animationSetLoop.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationSetLoop(Animation animation, int loop);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция включает (loop - TRUE) и отключает (loop - FALSE) циклическое воспроизведение анимации, когда анимация повторяется снова и снова, вместо того чтобы остановиться на последнем кадре. См. также animationGetLoop, animationPlay.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
double animationGetPos(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Возвращает текущую позицию анимации в секундах. См. также animationSetPos.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationSetPos(Animation animation, double pos);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция задаёт текущую позицию анимации в секундах. См. также animationGetPos, animationAddTime, animationSetFrame, animationPlay.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int animationGetFrame(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Возвращает номер текущего кадра анимации, нумерация от нуля. См. также animationSetFrame.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationSetFrame(Animation animation, int frame);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция перематывает анимацию к кадру с заданным номером (нумерация от нуля). См. также animationGetFrame, animationGetFramesCount, animationNextFrame, animationSetPos, animationSetLoop, animationPlay.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void animationNextFrame(Animation animation);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Переключает анимацию на следующий кадр. См. также animationPlay, animationSetLoop, animationSetFrame, animationAddTime, animationSetPos.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int imageLoad(const char *path, int *outWidth, int *outHeight, unsigned char **outPixels);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция загружает изображение из файла PNG. Возвращает TRUE если загрузка прошла успешно и FALSE если загрузить файл не удалось.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
В результате загрузки в переменные по адресам outWidth и outHeight будут помещены соответственно ширина и высота картинки. В переменную по адресу outPixels будет помещён указатель на пиксели картинки. Пиксели записываются в формате RGBA32 — для каждого пикселя последовательно идут 4 байта отвечающие за интенсивность каждой цветовой составляющей — красный, зелёный, синий, непрозрачность (alpha) — именно в таком порядке. Пиксели записаны по строкам сверху вниз, слева на право.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
В работе с пикселями вам помогут функции imageGetPixel, imageSetPixel.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция, в случае успешной загрузки изображения, динамически выделяет память под пиксели, и, вам после использования нужно эту память освободить обратившись к стандартной функции free.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
В случае если загрузка не удалась в качестве ширины и высоты будет записан ноль, в качестве указателя на пиксели будет записан нулевой указатель — NULL.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageSave, imageLoadFromMemory, imageFromViewport, imageToGLTexture.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
path — путь к файлу изображения;
|
|
Ivan Mahonin |
cece70 |
outWidth — указатель на переменную куда будет записана ширина загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outHeight — указатель на переменную куда будет записана высота загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outPixels — указатель на переменную куда будет записан указатель на массив пикселей изображения.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int imageLoadFromMemory(const void *data, int size, int *outWidth, int *outHeight, unsigned char **outPixels);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Загрузить изображение из данных файла PNG ранее загруженных в оперативную память.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Эта функция может быть вам полезна если вы хотите хранить все ваши изображения прямо внутри исполняемого файла. Например, при помощи утилиты xxd (в Linux) или подобной ей для вашей операционной системы, вы можете сгенерировать файл на языке Си с массивом содержащим все байты файла изображения. Данная функция позволит вам распаковать изображения из этого массива и получить доступ к его пикселям.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Возвращает TRUE если загрузка прошла успешно и FALSE если распаковать изображение не удалось.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
data — указатель на первый байт данных PNG;
|
|
Ivan Mahonin |
cece70 |
size — количество байт данных PNG;
|
|
Ivan Mahonin |
cece70 |
outWidth — указатель на переменную куда будет записана ширина загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outHeight — указатель на переменную куда будет записана высота загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outPixels — указатель на переменную куда будет записан указатель на массив пикселей изображения.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int imageSave(const char *path, int width, int height, const void *pixels);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция сохраняет изображение в файл PNG по заданному пути. Возвращает TRUE при успешном сохранении и FALSE если сохранить изображение не удалось.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageLoad, viewportSave.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Важно: Если файл по указанному пути уже существует, то он будет перезаписан. Вы может проверить существование файла функцией fileExists.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
path — путь к файлу в который нужно записать изображение;
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на массив пикселей изображения, формат смотрите в описании к функции imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
unsigned int imageToGLTexture(int width, int height, const void *pixels, int wrap);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Загрузить изображение в текстуру OpenGL. В случае успешной функция возвращает идентификатор текстуры OpenGL, и возвращает ноль если загрузка не удалась.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Во время загрузки создаётся копия данных изображения в видео-памяти и оригинальное изображение можно выгрузить из памяти.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageToGLTextureEx, imageToExistingGLTexture, imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на массив пикселей изображения, формат смотрите в описании к функции imageLoad;
|
|
Ivan Mahonin |
cece70 |
wrap — если TRUE то узор текстуры будет повторяющимся по горизонтали и вертикали.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
unsigned int imageToGLTextureEx(int width, int height, const void *pixels, int horWrap, int vertWrap, int smooth, int mipMap);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Загрузить изображение в текстуру OpenGL. В случае успешной функция возвращает идентификатор текстуры OpenGL, и возвращает ноль если загрузка не удалась.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Во время загрузки создаётся копия данных изображения в видео-памяти и оригинальное изображение можно выгрузить из памяти.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Вы можете включить или выключить бесконечное повторение узора текстуры по горизонтали и/или вертикали (параметры horWrap и vertWrap соответственно). Также вы можете включить сглаживание пикселей изображения (smooth, билинейная или трилинейная фильтрация) и включить построение mip-уровней (mipMap).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageToGLTexture, imageToExistingGLTexture, imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на массив пикселей изображения, формат смотрите в описании к функции imageLoad;
|
|
Ivan Mahonin |
cece70 |
horWrap — включить бесконечное повторение узора текстуры по горизонтали (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
vertWrap — включить бесконечное повторение узора текстуры по вертикали (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
smooth — включить сглаживание (TRUE или FALSE);
|
|
Ivan Mahonin |
cece70 |
mipMap — включить построение mip-уровней (TRUE или FALSE).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int imageToExistingGLTexture(unsigned int texid, int width, int height, const void *pixels);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Заменить пиксели существующей текстуры. Возвращает TRUE в случае успеха, иначе FALSE.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageToGLTexture, imageToGLTextureEx.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
texid — идентификатор существующей текстуры OpenGL;
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на массив пикселей изображения, формат смотрите в описании к функции imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int imageFromGLTexture(unsigned int texid, int *outWidth, int *outHeight, unsigned char **outPixels);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить пиксели из текстуры OpenGL. Пиксели копируются в новый массив, память для которого выделяется динамически. Поэтому вам, также как при работе с imageLoad, нужно после использования освободить выделенную под пиксели память при помощи стандартной функции free.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция возвращает TRUE в случае успеха, иначе FALSE.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
texid — идентификатор текстуры OpenGL;
|
|
Ivan Mahonin |
cece70 |
outWidth — указатель на переменную куда будет записана ширина загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outHeight — указатель на переменную куда будет записана высота загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outPixels — указатель на переменную куда будет записан указатель на массив пикселей изображения.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int imageFromViewport(int *outWidth, int *outHeight, unsigned char **outPixels);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить пиксели изображения из текущей области вывода OpenGL. Пиксели копируются в новый массив, память для которого выделяется динамически. Поэтому вам, также как при работе с imageLoad, нужно после использования освободить выделенную под пиксели память при помощи стандартной функции free.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция возвращает TRUE в случае успеха, иначе FALSE.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
outWidth — указатель на переменную куда будет записана ширина загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outHeight — указатель на переменную куда будет записана высота загруженного изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
outPixels — указатель на переменную куда будет записан указатель на массив пикселей изображения.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int viewportSave(const char *path);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Сохранить изображение из текущей области рисования OpenGL в файл. Обычно используется чтобы сделать снимок экрана (сохраняется только внутренняя область окна программы).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция возвращает TRUE в случае успеха, иначе FALSE.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
См. также imageSave, imageFromViewport.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Важно: Если файл по указанному пути уже существует, то он будет перезаписан. Вы может проверить существование файла функцией fileExists.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
unsigned int pixelGet(const void *pixel);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Сконвертировать пиксель в формате RGBA32, который используется в функции imageLoad в код цвета Helianthus. См. также pixelSet, imageGetPixel.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void pixelSet(void *pixel, unsigned int colorCode);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Записать цвет в пиксель в формате RGBA32, который используется в функции imageLoad. См. также pixelGet, imageSetPixel.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
unsigned int imageGetPixel(int width, int height, const void *pixels, int x, int y);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить цвет пикселя изображения. См. также imageSetPixel, pixelGet, imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на массив пикселей изображения, формат смотрите в описании к функции imageLoad;
|
|
Ivan Mahonin |
cece70 |
x, y — координаты пикселя.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void imageSetPixel(int width, int height, void *pixels, int x, int y, unsigned int colorCode);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Установить цвет пикселя изображения. См. также imageGetPixel, pixelSet, imageLoad.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Параметры:
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
width — ширина изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
height — высота изображения в пикселях;
|
|
Ivan Mahonin |
cece70 |
pixels — указатель на массив пикселей изображения, формат смотрите в описании к функции imageLoad;
|
|
Ivan Mahonin |
cece70 |
x, y — координаты пикселя,
|
|
Ivan Mahonin |
cece70 |
colorCode — код цвета.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
</body>
|
|
Ivan Mahonin |
cece70 |
</html>
|