Рисование элементов на экране

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

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(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(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(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)
DxFont font = renderCreateFont(zstring font, int height, uint flags [, uint charset])

Загружает установленный в системе шрифт по названию. Можно задать стиль шрифта и требуемую кодировку.

zstring font название
int height высота
uint flags флаги
uint charset кодировка

DxFont font шрифт

renderReleaseFont(DxFont font)

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

DxFont font шрифт

renderReleaseFont(my_font)
-- правильнее:
my_font = nil
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
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
float height = renderGetFontDrawHeight(DxFont font)

Возвращает высоту загруженного шрифта в пикселях

DxFont font шрифт

float height высота

uint index = renderGetFontCharIndexAt(DxFont font, string text, float x [, bool ignoreColorTags=false])

Возвращает индекс символа в тексте по позиции в пикселях

DxFont font шрифт
string text текст
float x смещение в пикселях
bool ignoreColorTags=false пропуск цветовых тегов

uint index индекс символа

float width = renderGetFontCharWidth(DxFont font, string char)

Получает ширину определённого символа и возвращает результат в пикселях

DxFont font шрифт
string char символ

float width ширина символа

DxTexture texture = renderLoadTextureFromFile(zstring file)

Загружает текстуру из файла

zstring file путь к файлу

DxTexture texture текстура

DxTexture texture = renderLoadTextureFromFileInMemory(uint pointer, uint size)

Загружает текстуру из файла в памяти процесса

uint pointer адрес памяти
uint size размер файла

DxTexture texture текстура

renderReleaseTexture(DxTexture texture)

Освобождает загруженную текстуру. Применять необязательно, т.к. все загруженные текстуры освобождаются сборщиком мусора. Функция оставлена для обеспечения совместимости со старыми версиями.

DxTexture texture текстура

renderReleaseTexture(texture)
-- правильнее:
texture = nil
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

uint struct = renderGetTextureStruct(DxTexture texture)

Возвращает указатель на объект IDirect3DTexture9, принадлежащий текстуре

DxTexture texture текстура

uint struct указатель

uint sprite = renderGetTextureSprite(DxTexture texture)

Возвращает указатель на объект ID3DXSprite, принадлежащий текстуре

DxTexture texture текстура

uint sprite указатель

uint sizeX, uint sizeY = renderGetTextureSize(DxTexture texture)

Возвращает размеры изображения

DxTexture texture текстура

uint sizeX ширина
uint sizeY высота

Рендер пользовательских примитивов

При помощи следующих функций вы можете осуществить отображение фигур любой формы, натягивать на них текстуру и задавать цвет отдельно каждому углу. Минимальный набор последовательных вызовов для правильной работы:

renderBegin(prim_type)
renderColor(color)
renderVertex(x, y)
renderEnd()
renderBegin(int type)

Начало рисования фигуры определённым методом.
Возможные значения type:

Название Значение Описание
POINTLIST 1 список точек
LINELIST 2 набор линий
LINESTRIP 3 ломаная линия
TRIANGLELIST 4 набор треугольников
TRIANGLESTRIP 5 серия связанных треугольников (многоугольник)
TRIANGLEFAN 6 серия связанных треугольников с единым центром

Подробнее о каждом методе построения примитивов: MSDN

int type метод

renderEnd()

Завершение рисования фигуры

renderColor(uint color)

Задаёт цвет. Должна быть вызвана перед добавлением вершины

uint color цвет в ARGB

renderColor(0xFFFF0000)
renderVertex(10, 100)
renderColor(0xFF0000FF)
renderVertex(200, 100)
renderVertex(float vX, float vY)

Добавляет вершину в фигуру по абсолютным координатам

float vX, float vY координаты

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(DxTexture texture)

Задаёт фигуре текстуру. Каждой фигуре может быть задана только одна текстура. Значение nil сбросит заданную текстуру. Эта функция должна быть использована совместно с renderSetTexCoord

DxTexture texture текстура

renderSetRenderState(int state, uint value)

Устанавливает значение рендерстейта.
Подробнее о рендерстейтах: MSDN

int state тип
uint value новое значение