Texturas, shaders e render targets
Tudo o que estas funções desenham vale por um quadro. Não existe “criar um retângulo e deixá-lo lá”: a tela é redesenhada a cada quadro, então o seu desenho precisa ser refeito toda vez — de dentro de um handler do evento onClientRender.
local telaW, telaH = getScreenSize()
addEventHandler("onClientRender", root, function() -- fundo da barra dxDrawRectangle(20, telaH - 70, 240, 26, tocolor(0, 0, 0, 160)) -- preenchimento dxDrawRectangle(20, telaH - 70, 240 * 0.65, 26, tocolor(80, 200, 120, 255)) -- linha de base dxDrawLine(20, telaH - 44, 260, telaH - 44, tocolor(255, 255, 255, 90), 1)end)A ordem importa: o que é desenhado depois fica por cima.
As cores são inteiros empacotados, e não três números soltos. Monte-as com tocolor(r, g, b, a), onde os quatro canais vão de 0 a 255. Quando o argumento de cor é omitido, o padrão é branco opaco — tocolor(255, 255, 255, 255).
Quando um argumento tem o tipo errado, ou um valor fora do intervalo aceito, a maioria destas funções devolve false e escreve o motivo no console de debug. As exceções são dxDrawPrimitive, dxDrawMaterialPrimitive, dxDrawPrimitive3D, dxDrawMaterialPrimitive3D, dxDrawWiredSphere e dxDrawModel3D: um argumento inválido em qualquer uma delas gera um erro de Lua, que interrompe o código que a chamou.
Estas 36 funções existem somente no cliente. Chamá-las de um script de servidor resulta em erro de valor nulo.
O desenho de texto, retângulos e imagens fica na página de Desenho na tela.
Primitivas 2D
Seção intitulada “Primitivas 2D”As coordenadas são em pixels, contadas a partir do canto superior esquerdo da tela.
Tipos de primitiva
Seção intitulada “Tipos de primitiva”Os mesmos nomes valem para as versões 2D e 3D.
| Valor | Como os vértices são ligados | Quantidade exigida |
|---|---|---|
"pointlist" | Cada vértice vira um ponto solto. | 1 ou mais |
"linelist" | Cada par de vértices vira uma linha independente. | múltiplo de 2 |
"linestrip" | Uma linha contínua passando por todos os vértices. | 2 ou mais |
"trianglelist" | Cada trio de vértices vira um triângulo independente. | múltiplo de 3 |
"trianglestrip" | Faixa de triângulos: cada novo vértice fecha um triângulo com os dois anteriores. | 3 ou mais |
"trianglefan" | Leque: todos os triângulos partem do primeiro vértice. | 3 ou mais |
A área de radar é desenhada no minimapa, uma vez por quadro, a partir de coordenadas do mundo.
Desenho 3D
Seção intitulada “Desenho 3D”Aqui as coordenadas são as do mundo, não as da tela. O desenho continua sendo por quadro.
Profundidade
Seção intitulada “Profundidade”As funções de linha e primitiva 3D aceitam um argumento de estágio, que é um booleano ou o nome de um estágio de renderização (maiúsculas ou minúsculas):
| Valor | Efeito |
|---|---|
false ou "postfx" (padrão) | Desenhado depois do filtro de cor do jogo. O desenho respeita o mundo — o que estiver na frente esconde o traço. |
"prefx" | Desenhado antes do filtro de cor do jogo, então o filtro também se aplica a ele. Também respeita o mundo. |
true ou "postgui" | Desenhado depois da GUI, por cima de tudo. Com o menu principal aberto, cai para "postfx". |
Materiais
Seção intitulada “Materiais”Materiais são os elementos que guardam imagem: texturas, render targets, screen sources e shaders. Todos podem ser usados onde uma imagem é pedida.
Materiais criados por um resource são liberados quando ele para, mas você também pode soltá-los na hora com destroyElement.
Modos de borda
Seção intitulada “Modos de borda”| Valor | O que acontece fora da imagem |
|---|---|
"wrap" | A imagem se repete. |
"mirror" | A imagem se repete espelhada a cada repetição. |
"clamp" | Os pixels da borda são esticados. |
"border" | Tudo fora vira a cor de borda escolhida. |
"mirror-once" | Espelha uma vez e depois estica a borda. |
Uma string de pixels é a imagem crua, que você pode ler e alterar em Lua. Existem quatro formatos:
| Formato | Descrição |
|---|---|
"plain" | Pixels sem compressão. É o único formato que pode ser lido e alterado pixel a pixel. |
"png" | Imagem PNG comprimida. |
"jpeg" | Imagem JPEG comprimida. |
"dds" | Imagem DDS. |