I have a giant table of RGBA values (which are just repurposed UDim2 values), I want to make a function that when called with that table will draw it on screen. I was thinking making a Frame, sizing it down to a pixel and positioning it;

Ex.

function DrawToScreen(renderData, ViewportSize)
	for i=1,ViewportSize.Y do
		for k=1,ViewportSize.X do
			local iteration = i*ViewportSize.X+k
			local x = Instance.new("Frame")
			x.Size = UDim.new(0,1,0,1)
			x.Position = UDim.new(0,k - 1,0,i - 1)
			x.BackgroundColor3 = Color3.new(renderData[iteration].X.Scale, renderData[iteration].X.Offset, renderData[iteration].Y.Scale)
			x.BackgroundTransparency = renderData[iteration].Y.Offset
			x.Parent = PlayerGui
		end
	end
end

but there must be a more efficient method. Any ideas?

Another, extra, thing that would help is some sort of way to disable 3D rendering in Roblox. I wont be using it and it will take up a lot of resources.

5 comments

0

For the 3D rendering, if nothing is being renderred then why would it take up a lot of resources?

0

@SteamG0D Its still raycasting even if there's nothing in the workspace, that uses some of the GPU and I need to squeese every last drop of performace I can out of Roblox for this.

0

I've also given your initial question some thought, and I don't believe there is a way to increase the efficiency of drawing an image onto pixel sized frames due to the fact that multithreading is not supported by roblox lua.

0

@StreamingG0D well at least that helps with my second problem. Thanks.