M MY Multiplayer: Wiki
Lado
Tipo

dxGetTexturePixels

Cliente

Lê os pixels de uma imagem e os entrega a uma função, alguns quadros depois.

bool dxGetTexturePixels(texture|dui texture, function callback [, string format = plain, string textureFormat = unknown, bool mipmaps = true, int x, y = 0, 0, int width, height = 0, 0])

Parâmetros

NomeTipoDescrição
texturetexture|duiA imagem: textura, render target, screen source ou dui. Uma textura de txd também serve.
formatstringFormato: plain, png, jpeg ou dds.padrão plain
textureFormatstringPara dds: unknown (o da imagem), argb, xrgb, rgb, dxt1, dxt2, dxt3, dxt4 ou dxt5. Só pode vir depois de format.padrão unknown
mipmapsboolPara dds: gera mipmaps. Só pode vir depois de format.padrão true
x, yintCanto superior esquerdo da área lida, em pixels. Aceita também um vec2.padrão 0, 0
width, heightintTamanho da área lida. Com altura 0, lê a imagem inteira. Aceita também um vec2.padrão 0, 0
callbackfunctionRecebe os pixels como string, ou false se a leitura falhou.

Retorno

true se a leitura começou, false se a imagem ainda não tem conteúdo.

Um número no começo (o índice de superfície do MTA) é aceito e ignorado. Pixels plain são 4 bytes por pixel (azul, verde, vermelho, alfa), linha a linha, seguidos da largura e da altura em 2 bytes cada.

Exemplo

local target = dxCreateRenderTarget(256, 256, true)

dxGetTexturePixels(target, "png", function(pixels)
    if not pixels then return end
    local file = fileCreate("snapshot.png")
    fileWrite(file, pixels)
    fileClose(file)
end)
Vindo do MTANo MTA os pixels são devolvidos na hora. No MYMP eles chegam numa função, porque a leitura da placa de vídeo leva alguns quadros.

Veja também