|
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>
|