Рисование элементов на экране
Все функции, занимающиеся отображением, рисуют элементы только на один кадр, поэтому для корректного отображения должны быть вызваны каждый кадр.
renderDrawLine
renderDrawLine(float pos1x, float pos1y, float pos2x, float pos2y, float width, uint color)
Описание
Отображает на экране линию от точки pos1x, pos1y
до точки pos2x, pos2y
Аргументы
float pos1x, pos1y
координаты первой точки
float pos2y, pos2y
координаты второй точки
float width
ширина линии
uint color
цвет линии в формате ARGB
Пример использования
while true do renderDrawLine(100, 100, 200, 200, 2.0, 0xFFD00000) -- непрозрачный красный цвет wait(0) -- задержка на один кадр end
renderDrawBox
renderDrawBox(float posX, float posY, float sizeX, float sizeY, uint color)
Описание
Рисует прямоугольник в указанных координатах с определённым размером
Аргументы
float posX, posY
координаты
float sizeX, sizeY
размер
uint color
цвет в ARGB
Пример использования
renderDrawBox(10, 15, 200, 80, 0xAA00CC00)
renderDrawBoxWithBorder
renderDrawBoxWithBorder(float posX, float posY, float sizeX, float sizeY, uint color, float bsize, uint bcolor)
Описание
Рисует прямоугольник с границей
Аргументы
float posX, posY
координаты
float sizeX, sizeY
размер
uint color
цвет в ARGB
float bsize
толщина границы
uint bcolor
цвет границы в ARGB
Пример использования
renderDrawBox(10, 15, 200, 80, 0xAA00CC00, 3, 0x90000000)
renderDrawPolygon
renderDrawPolygon(float posX, float posY, float sizeX, float sizeY, int corners, float rotation, uint color)
Описание
Отображает многоугольник в указанных координатах с заданным вращением и количеством углов
Аргументы
float posX, float posY
координаты центра
float sizeX, float sizeY
размер
int corners
количество вершин
float rotation
вращение в градусах
uint color
цвет фигуры в формате ARGB
Пример использования
-- пятиугольник по центру экрана local sx, sy = getScreenResolution() renderDrawPolygon(sx / 2, sy / 2, 150, 150, 5, 0.0, 0xFF1166AA)
renderCreateFont
DxFont font = renderCreateFont(zstring font, int height, uint flags [, uint charset])
Описание
Загружает установленный в системе шрифт по названию. Можно задать стиль шрифта и требуемую кодировку.
Аргументы
zstring font
название
int height
высота
uint flags
флаги
uint charset
кодировка
Возвращаемые значения
DxFont font
шрифт
renderReleaseFont
renderReleaseFont(DxFont font)
Описание
Загруженные шрифты выгружаются автоматически сборщиком мусора, так что использование этой функции необязательно, она существует лишь для обеспечения совместимости со старыми версиями.
Аргументы
DxFont font
шрифт
Пример использования
renderReleaseFont(my_font) -- правильнее: my_font = nil
renderFontDrawText
renderFontDrawText(DxFont font, zstring text, float posX, float posY, uint color [, bool ignoreColorTags=false])
Описание
Отображает текст на экране, используя загруженный шрифт. Поддерживает цветовые теги в формате {RRGGBB} и {AARRGGBB}, и символ переноса строки \n
.
Аргументы
DxFont font
шрифт
zstring text
текст
float posX, posY
координаты
uint color
цвет в ARGB
bool ignoreColorTags=false
если задано true
, цветовые теги не станут обрабатываться
Пример использования
local font_flag = require('moonloader').font_flag local my_font = renderCreateFont('Verdana', 12, font_flag.BOLD + font_flag.SHADOW) function main() while true do renderFontDrawText(my_font, 'Colors:\n{FF0000}Red\n{00FF00}Green\n{0000FF}Blue\n{80FFFFFF}Transparent white', 10, 400, 0xFFFFFFFF) wait(0) end end
renderGetFontDrawTextLength
float length = renderGetFontDrawTextLength(DxFont font, zstring text [, bool ignoreColorTags=false])
Описание
Вычисляет ширину заданного текста для загруженного шрифта и возвращает результат в пикселях.
Аргументы
DxFont font
шрифт
zstring text
текст
bool ignoreColorTags=false
пропуск цветовых тегов
Возвращаемые значения
float length
ширина в пикселях
Пример использования
local friends = {'Kalcor', 'Jacob', 'Sacky'} local x = 10 for _, v in ipairs(friends) do renderFontDrawText(my_font, v, x, 300, 0xFFFFCDCD) x = x + 5 + renderGetFontDrawTextLength(my_font, v) end
renderGetFontDrawHeight
float height = renderGetFontDrawHeight(DxFont font)
Описание
Возвращает высоту загруженного шрифта в пикселях
Аргументы
DxFont font
шрифт
Возвращаемые значения
float height
высота
renderGetFontCharIndexAt
uint index = renderGetFontCharIndexAt(DxFont font, string text, float x [, bool ignoreColorTags=false])
Описание
Возвращает индекс символа в тексте по позиции в пикселях
Аргументы
DxFont font
шрифт
string text
текст
float x
смещение в пикселях
bool ignoreColorTags=false
пропуск цветовых тегов
Возвращаемые значения
uint index
индекс символа
renderGetFontCharWidth
float width = renderGetFontCharWidth(DxFont font, string char)
Описание
Получает ширину определённого символа и возвращает результат в пикселях
Аргументы
DxFont font
шрифт
string char
символ
Возвращаемые значения
float width
ширина символа
renderLoadTextureFromFile
DxTexture texture = renderLoadTextureFromFile(zstring file)
Описание
Загружает текстуру из файла
Аргументы
zstring file
путь к файлу
Возвращаемые значения
DxTexture texture
текстура
renderLoadTextureFromFileInMemory
DxTexture texture = renderLoadTextureFromFileInMemory(uint pointer, uint size)
Описание
Загружает текстуру из файла в памяти процесса
Аргументы
uint pointer
адрес памяти
uint size
размер файла
Возвращаемые значения
DxTexture texture
текстура
renderReleaseTexture
renderReleaseTexture(DxTexture texture)
Описание
Освобождает загруженную текстуру. Применять необязательно, т.к. все загруженные текстуры освобождаются сборщиком мусора. Функция оставлена для обеспечения совместимости со старыми версиями.
Аргументы
DxTexture texture
текстура
Пример использования
renderReleaseTexture(texture) -- правильнее: texture = nil
renderDrawTexture
renderDrawTexture(DxTexture texture, float posX, float posY, float sizeX, float sizeY, float rotation, uint color)
Описание
Отображает загруженную текстуру по заданным координатам, с указанным размером и вращением
Аргументы
DxTexture texture
текстура
float posX, posY
координаты
float sizeX, sizeY
размер
float rotation
вращение
uint color
цвет в ARGB
renderGetTextureStruct
uint struct = renderGetTextureStruct(DxTexture texture)
Описание
Возвращает указатель на объект IDirect3DTexture9, принадлежащий текстуре
Аргументы
DxTexture texture
текстура
Возвращаемые значения
uint struct
указатель
renderGetTextureSprite
uint sprite = renderGetTextureSprite(DxTexture texture)
Описание
Возвращает указатель на объект ID3DXSprite, принадлежащий текстуре
Аргументы
DxTexture texture
текстура
Возвращаемые значения
uint sprite
указатель
renderGetTextureSize
uint sizeX, uint sizeY = renderGetTextureSize(DxTexture texture)
Описание
Возвращает размеры изображения
Аргументы
DxTexture texture
текстура
Возвращаемые значения
uint sizeX
ширина
uint sizeY
высота
Рендер пользовательских примитивов
При помощи следующих функций вы можете осуществить отображение фигур любой формы, натягивать на них текстуру и задавать цвет отдельно каждому углу. Минимальный набор последовательных вызовов для правильной работы:
renderBegin(prim_type) renderColor(color) renderVertex(x, y) renderEnd()
renderBegin
renderBegin(int type)
Описание
Начало рисования фигуры определённым методом.
Возможные значения type
:
Название | Значение | Описание |
---|---|---|
POINTLIST | 1 | список точек |
LINELIST | 2 | набор линий |
LINESTRIP | 3 | ломаная линия |
TRIANGLELIST | 4 | набор треугольников |
TRIANGLESTRIP | 5 | серия связанных треугольников (многоугольник) |
TRIANGLEFAN | 6 | серия связанных треугольников с единым центром |
Подробнее о каждом методе построения примитивов: MSDN
Аргументы
int type
метод
renderEnd
renderEnd()
Описание
Завершение рисования фигуры
renderColor
renderColor(uint color)
Описание
Задаёт цвет. Должна быть вызвана перед добавлением вершины
Аргументы
uint color
цвет в ARGB
Пример использования
renderColor(0xFFFF0000) renderVertex(10, 100) renderColor(0xFF0000FF) renderVertex(200, 100)
renderVertex
renderVertex(float vX, float vY)
Описание
Добавляет вершину в фигуру по абсолютным координатам
Аргументы
float vX, float vY
координаты
renderSetTexCoord
renderSetTexCoord(float posX, float posY)
Описание
Указывает, какая точка текстуры будет прикреплена к следующей вершине. Координаты точки задаются в диапазоне от '0.0' до '1.0', относительно размеров всей текстуры. Должна быть вызвана перед каждым добавлением вершины, к которой нужно прикрепить текстуру. Без вызова renderBindTexture
не будет иметь эффекта
Аргументы
float posX, posY
относительные координаты текстуры
Пример использования
renderColor(0xFFFFFFFF) renderBindTexture(tex) renderSetTexCoord(0.0, 0.0) renderVertex(100, 100)
renderBindTexture
renderBindTexture(DxTexture texture)
Описание
Задаёт фигуре текстуру. Каждой фигуре может быть задана только одна текстура. Значение nil
сбросит заданную текстуру.
Эта функция должна быть использована совместно с renderSetTexCoord
Аргументы
DxTexture texture
текстура
renderSetRenderState
renderSetRenderState(int state, uint value)
Описание
Устанавливает значение рендерстейта.
Подробнее о рендерстейтах: MSDN
Аргументы
int state
тип
uint value
новое значение