This is really impressive!
One question though. How on earth did you get clearing to be so fast?
My current method involves cloning an RGBA array table and setting that my grid variable. I am not sure how I could make it any faster. Are you caching your grid with fixed colours or something?
function Canvas:Clear()
Grid = table.clone(ClearingGrid)
end
Gonna have to stop you on this bit. CanvasDraw definitely has inbuilt shapes n stuff too. CanvasDraw is a graphics library. It has line, polygon, shape, and advanced image rendering and sampling, and quite a bit more too!
As far as speeds go, you’re clearing code seems to be infinitely faster. It seems like you are caching your end result or something? Cause I have no idea how you are getting it to be so fast.
Also, im trying to figure out the documentation, im following your shape section in your tutorials, but im struggling to draw a pixel.
local OSGL = require(script.OSGL)
local enum = OSGL.enum
local window = OSGL.window
local shape = OSGL.shape
local color = OSGL.color
local myWindow = window.new({
Size = enum.WindowSize.Maximum,
Instance = script.Parent
})()
local function GetColour()
return color.new(math.random(0, 1), math.random(0, 1), math.random(0, 1), 1)
end
while myWindow:isOpen() do
for X = 1, 1024 do
for Y = 1, 1024 do
myWindow:draw(shape.pixel(Vector2.new(X, Y), GetColour()))
end
end
myWindow:render()
end
Oh btw, u should try doing a per-pixel rendering test. Im curious to see how performance goes for you.
CanvasDraw can achieve around 8 FPS at 1024x1024 with random pixels every frame.
Code:
local CanvasDraw = require(script.CanvasDraw)
local Canvas = CanvasDraw.new(script.Parent, Vector2.new(1024, 1024), Color3.new(0, 0, 0))
Canvas.AutoRender = false
while true do
for X = 1, 1024 do
for Y = 1, 1024 do
local R, G, B = math.random(0, 1), math.random(0, 1), math.random(0, 1)
Canvas:SetRGB(X, Y, R, G, B)
end
end
Canvas:Render()
task.wait()
end