Blame doc/ru/framebuffer.html

cece70
cece70
cece70
<meta charset="UTF-8">
cece70
<link href="style.css" rel="stylesheet" type="text/css">
cece70
<title>Буфер кадра - Helianthus</title>
cece70
cece70
cece70
77a314
  

Helianthus

77a314
  
77a314
  

Helianthus: Документация

77a314
  

Установка

cece70
  

Запуск и общие функции

cece70
  

Клавиатура и мышь

cece70
  

Рисование

cece70
  

Шрифты и текст

cece70
  

Текстуры и анимация

cece70
  

Буфер кадра

cece70
  

Спрайты

cece70
  

Группы спрайтов

cece70
  

Звук

cece70
  
cece70
  

Все функции

cece70
cece70
cece70
cece70

Буфер кадра

cece70
cece70

Буфер кадра позволяет вам рисовать не только на экране, но и прямо на текстуре в видео-памяти применяя при этом те же функции рисования.

cece70
cece70

Создать буфер кадра можно функцией createFramebuffer, которая возвращает значение типа Framebuffer, которое по сути является адресом в памяти — указателем на описание буфера кадра внутри библиотеки Helianthus. Количество буферов кадра с которыми вы можете одновременно работать и их максимальные размеры зависят от вашего видео-драйвера.

cece70
d9eca7

После создания буфера кадра в можете создать связанную с ним однокадровую анимацию при помощи функции createAnimationFromFramebuffer. Это будет не простая анимация — изображение в ней будет изменяться как только вы что-либо нарисуете на вашем буфере кадра.

cece70
cece70

Для того чтобы начать рисовать на буфере кадра вам нужно вызвать функцию target. После завершение рисования вы можете снова вернуться к рисованию на экране обратившись к функции noTarget.

cece70
cece70

Функции:

cece70
cece70

Framebuffer createFramebuffer(int width, int height);

cece70
cece70

Создаёт буфер кадра заданных размеров со включенным сглаживанием, но с выключенным повторением текстуры по горизонтали и вертикали. См. также createFramebufferEx, createAnimationFromFramebuffer, target.

cece70
cece70

Параметры:

cece70
cece70

width — ширина нового буфера кадра в пикселях;

cece70
height — высота нового буфера кадра в пикселях.

cece70
cece70

Framebuffer createFramebufferEx(int width, int height, const void *pixels, int horWrap, int vertWrap, int smooth);

cece70
cece70

Создать буфер кадра с расширенным набором настроек. См. также createFramebuffer, createFramebufferFromFile, createAnimationFromFramebuffer, target.

cece70
cece70

Параметры:

cece70
cece70

width — ширина нового буфера кадра в пикселях;

cece70
height — высота нового буфера кадра в пикселях;
cece70
pixels — указатель на массив пикселей (смотрите формат в описании функции imageLoad), которые зададут начальное изображение буфера кадра; этот параметр может быть NULL, буфер будет заполнен прозрачными писелями;
cece70
horWrap — включить горизонтальное повторение для текстуры созданной на основе буфера кадра (TRUE или FALSE);
cece70
vertWrap — включить вертикальное повторение для текстуры созданной на основе буфера кадра (TRUE или FALSE);
cece70
smooth — включить сглаживание (билинейная фильтрация) для текстуры созданной на основе буфера кадра (TRUE или FALSE).

cece70
cece70

Framebuffer createFramebufferFromFile(const char *path);

cece70
cece70

Создать буфер кадра на основе изображения загруженного из файла. Размеры буфера будут соответствовать размеру изображения и само изображение будет загружено в буфер кадра в качестве его начального состояния. Будет включено сглаживание, но отключено повторение узора текстуры по горизонтали и вертикали.

cece70
cece70

Параметры:

cece70
cece70

path — путь к файлу изображения.

cece70
cece70

void framebufferDestroy(Framebuffer framebuffer);

cece70
cece70

Удалить буфер кадра. См. также createFramebuffer.

cece70
cece70

Важно: Скорее всего у вас в программе останется переменная в которой хранился указатель на буфер кадра. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на буфер кадра, буфер удалён. Вы можете занести в эту переменную другой буфер кадра, но использовать старое значение переменной больше нельзя это приведёт у ошибкам и непредсказуемому поведению программы.

cece70
cece70

void framebufferFlush(Framebuffer framebuffer);

cece70
cece70

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

cece70
cece70

Данная функция заставляет видео-драйвер завершить все операции немедленно. Обычно вам не нужно будет её использовать, везде где это требуется Helianthus сделает это за вас. Однако, эта функция вам может понадобиться если вы используете функции OpenGL напрямую, минуя функции рисования библиотеки Helianthus.

cece70
cece70

int framebufferGetWidth(Framebuffer framebuffer);

cece70
cece70

Возвращает ширину буфера кадра в пикселях. См. также framebufferGetHeight.

cece70
cece70

int framebufferGetHeight(Framebuffer framebuffer);

cece70
cece70

Возвращает высоту буфера кадра в пикселях. См. также framebufferGetWidth.

cece70
cece70

unsigned int framebufferGetGLTexId(Framebuffer framebuffer);

cece70
cece70

Возвращает внутренний идентификатор текстуры OpenGL связанной с буфером кадра. См. также framebufferGetGLId, framebufferFlush.

cece70
cece70

unsigned int framebufferGetGLId(Framebuffer framebuffer);

cece70
cece70

Возвращает внутренний идентификатор буфера кадра OpenGL. См. также framebufferGetGLTexId, framebufferFlush.

cece70
cece70

void projectionByViewport();

cece70
cece70

Устанавливает матрицу проекции OpenGL таким образом, чтобы начало координат было в верхнем левом углу области вывода OpenGL, а единичный отрезок соответствовал размеру пикселя. См. также targetEx.

cece70
cece70

void viewportByFramebuffer(Framebuffer framebuffer);

cece70
cece70

Устанавливает область вывода OpenGL на всю площадь заданного буфера кадра. См. также targetEx.

cece70
cece70

void viewportByWindow();

cece70
cece70

Устанавливает область вывода OpenGL на всю площадь окна. См. также targetEx.

cece70
cece70

void targetEx(Framebuffer framebuffer, int updateViewport, int updateProjection);

cece70
cece70

Устанавливает текущую область рисования. Если framebuffer не NULL, то рисование будет производиться на буфере кадра, иначе на окне. Параметры updateViewport и updateProjection позволяют вам отключить изменение области вывода OpenGL и матрици проекции соответственно. См. также target, noTarget, viewportByFramebuffer, viewportByWindow, projectionByViewport.

cece70
cece70

Параметры:

cece70
cece70

framebuffer — буфер кадра, если NULL, то окно программы будет выбрано в качестве целевого холста для рисования;

cece70
updateViewport — задать область вывода OpenGL соответствующую новому целевому холсту (TRUE или FALSE, см. viewportByFramebuffer, viewportByWindow);
cece70
updateProjection — задать матрицу проекции OpenGL соответствующую новой области вывода (TRUE или FALSE, см. projectionByViewport), игнорируется если updateViewport выключен.

cece70
cece70

void target(Framebuffer framebuffer);

cece70
cece70

Функция выбирает буфер кадра в качестве целевого холста для рисования. Последующие операции рисование будет проводиться на данном буфере кадра. Если вы будете работать с функциями OpenGL напрямую, минуя функции рисования Helianthus, то вам необходимо знать, что данная функция меняет область вывода (glViewport) и матрицу проекции OpenGL.

cece70
cece70

См. также noTarget, targetEx, saveState, restoreState.

cece70
cece70

Параметры:

cece70
cece70

framebuffer — буфер кадра, если NULL, то окно программы будет выбрано в качестве целевого холста для рисования

cece70
cece70

void noTarget();

cece70
cece70

Выбрать окно программы в качестве целевого холста для рисования. См. также target, saveState, restoreState.

cece70
cece70
cece70
cece70