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
For the 3D rendering, if nothing is being renderred then why would it take up a lot of resources?
@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.
https://developer.roblox.com/en-us/articles/content-streaming
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.
@StreamingG0D well at least that helps with my second problem. Thanks.