Blame doc/ru/framebuffer.html

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 cece70
  

Helianthus

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
  

Все функции

Ivan Mahonin cece70
Ivan Mahonin cece70
Ivan Mahonin cece70
Ivan Mahonin cece70

Буфер кадра

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

Функции:

Ivan Mahonin cece70
Ivan Mahonin cece70

Framebuffer createFramebuffer(int width, int height);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

Параметры:

Ivan Mahonin cece70
Ivan Mahonin cece70

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

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

Параметры:

Ivan Mahonin cece70
Ivan Mahonin cece70

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

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

Ivan Mahonin cece70
Ivan Mahonin cece70

Framebuffer createFramebufferFromFile(const char *path);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

Параметры:

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

void framebufferDestroy(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

void framebufferFlush(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

int framebufferGetWidth(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

int framebufferGetHeight(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

unsigned int framebufferGetGLTexId(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

unsigned int framebufferGetGLId(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

void projectionByViewport();

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

void viewportByFramebuffer(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

void viewportByWindow();

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

Параметры:

Ivan Mahonin cece70
Ivan Mahonin cece70

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

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

Ivan Mahonin cece70
Ivan Mahonin cece70

void target(Framebuffer framebuffer);

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

Параметры:

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70

void noTarget();

Ivan Mahonin cece70
Ivan Mahonin cece70

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

Ivan Mahonin cece70
Ivan Mahonin cece70
Ivan Mahonin cece70
</body>
Ivan Mahonin cece70
</html>