0.9.0 - Added a working rasterization library.
This library uses braille characters and GPU raw instructions to display generated bitmaps in real-time, in high resolutions. A demo is available from command rtest.
This commit is contained in:
+89
-3
@@ -1,5 +1,91 @@
|
||||
local raster = import("raster")
|
||||
|
||||
raster.drawPixel(4, 3, 0xFFFF00)
|
||||
raster.drawPixel(40, 34, nil, 0xFF00F)
|
||||
raster.drawPixel(3, 1)
|
||||
raster.init()
|
||||
|
||||
--[[for i=4,20 do
|
||||
raster.set(i,i)
|
||||
raster.set(i,i+4,0xFF00FF)
|
||||
end]]
|
||||
|
||||
--[[ for x=4,20 do
|
||||
for y=4,20 do
|
||||
if (x+y)%2==0 then
|
||||
raster.set(x,y,0xFF00FF)
|
||||
end
|
||||
end
|
||||
end ]]
|
||||
|
||||
local event = import("event")
|
||||
local x=0
|
||||
local y=0
|
||||
local vx=1
|
||||
local vy=1
|
||||
local col = 0x808080
|
||||
local i=0
|
||||
|
||||
while event.pull("key_down",0)==nil do
|
||||
i = i + 1
|
||||
raster.set(x,y,col)
|
||||
|
||||
x = x + vx
|
||||
y = y + vy
|
||||
|
||||
if x>raster.displayWidth then
|
||||
x=raster.displayWidth
|
||||
vx = -math.abs(vx)
|
||||
col = math.random(0,0xFFFFFF)
|
||||
end
|
||||
if x<1 then
|
||||
x=1
|
||||
vx = math.abs(vx)
|
||||
col = math.random(0,0xFFFFFF)
|
||||
end
|
||||
if y>raster.displayHeight-6 then
|
||||
y=raster.displayHeight-6
|
||||
vy = -math.abs(vy)
|
||||
col = math.random(0,0xFFFFFF)
|
||||
end
|
||||
if y<1 then
|
||||
y=1
|
||||
vy = math.abs(vy)
|
||||
col = math.random(0,0xFFFFFF)
|
||||
end
|
||||
|
||||
if i>10 and i%15>0 then
|
||||
while true do
|
||||
local tries=0
|
||||
local dx,dy=math.random(1,raster.displayWidth),math.random(1,raster.displayHeight-6)
|
||||
if raster.get(dx,dy)~=0 then
|
||||
raster.set(dx,dy,0)
|
||||
break
|
||||
end
|
||||
tries = tries + 1
|
||||
if tries>20 then
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if i%10==0 then
|
||||
raster.update()
|
||||
coroutine.yield()
|
||||
end
|
||||
end
|
||||
|
||||
--[[ for i=0,360,4 do
|
||||
local angle = i/180*math.pi
|
||||
if false then
|
||||
local x1,y1,x2,y2=raster.displayWidth/2,raster.displayHeight/2,raster.displayWidth/2+math.sin(angle)*80,raster.displayHeight/2+math.cos(angle)*80
|
||||
raster.fillEllipse(x1,y1,x2,y2,0xFF00FF)
|
||||
raster.update()
|
||||
raster.fillEllipse(x1,y1,x2,y2,0x000000)
|
||||
else
|
||||
local x,y,c=raster.displayWidth/2,raster.displayHeight/2,math.abs(math.sin(angle)*100)
|
||||
raster.drawCircle(x,y,c,0xFF00FF)
|
||||
raster.update()
|
||||
raster.drawCircle(x,y,c,0x000000)
|
||||
end
|
||||
end ]]
|
||||
|
||||
raster.free()
|
||||
termlib.cursorPosY=1
|
||||
Reference in New Issue
Block a user