Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local per = peripheral.wrap("back")
- local ar = per.canvas()
- local sx,sy = ar.getSize()
- local FPScap = 150
- local renderFrames = 10000
- local doFPScapEventYield = false
- local screenAR = {
- x = sx *0.5,
- y = sy *0.5
- }
- local dt = require("jig3D")
- local draw = require("jigAR")
- local wire = require("WireVR")
- wire.doMoveBack(false)
- local camOffset = wire.getVposARotation()
- local objList = {
- c1 = dt.newCube(),
- c2 = dt.newCube()
- }
- --for i=1,500 do objList[i] = dt.newCube() end
- local frames = 0
- local FPS = 0
- local sTime = os.time()
- local alive = true
- local cam = wire.getVposARotation()
- local projected = {}
- local calcFPS = function()
- local cTime = os.time()
- local tDif = (cTime-sTime)/0.02
- FPS = frames/tDif
- end
- local engine = function()
- --for k in pairs() do print(k) end
- objList.c2.scale.x = 10
- objList.c2.scale.y = 0.1
- objList.c2.scale.z = 10
- objList.c2.loc.y = 3
- sleep(2)
- for i = 1, renderFrames do
- frames = frames + 1
- local ran = false
- --[[for k in pairs(objList) do
- objList[k].rot.y = os.time()*1500
- objList[k].rot.z = os.time()*2000
- objList[k].rot.x = os.time()*2500
- end--]]
- os.pullEvent("RENDERFRAME")
- ar.clear()
- for name,transformedVertices in pairs(projected) do
- draw.drawSolidObj(ar,objList[name].indexList,transformedVertices,objList[name].colorList)
- end
- if not ran then calcFPS() end
- print("Average FPS:"..math.floor(FPS).." total:"..("%d/%d"):format(math.floor(i),math.floor(renderFrames)))
- end
- alive = false
- wire.setState(alive)
- end
- local tracker = function()
- while alive do
- cam = wire.getVposARotation()
- cam.loc = cam.loc:sub(camOffset.loc)
- local objs = 0
- for name,objectData in pairs(objList) do
- objs = objs + 1
- if objs == 1 then
- projected[name] = dt.screenTransform(objectData,screenAR,cam)
- else
- objs = 0
- local ocl = cam.loc
- local ocr = cam.rot
- local cam = {
- loc = vector.new(ocl.x,-ocl.y,-ocl.z),
- rot = ocr
- }
- projected[name] = dt.screenTransform(objectData,screenAR,cam)
- end
- end
- wire.eventYield()
- end
- end
- local FPSCAP = function()
- while alive do
- for _=1,math.max(FPScap,20)/20 do
- os.queueEvent("RENDERFRAME")
- if doFPScapEventYield then wire.eventYield() end
- end
- sleep()
- end
- end
- parallel.waitForAll(wire.launch,engine,tracker,FPSCAP)
- local eTime = os.time()
- if eTime < sTime then eTime = eTime + sTime end
- local tTime = (eTime-sTime)/0.02
- local totalP = 0
- for name,_ in pairs(objList) do
- totalP = totalP + #objList[name].indexList
- end
- print("---------------------------------------")
- print("Finished scene with "..(totalP/3).." total polygons")
- print("Drew "..frames.." frames in "..tTime.." seconds")
- print("Average FPS: "..(frames/tTime))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement