将 .py 和 .pyi 后缀名改为了 .vp 和 .vpi 后缀名
This commit is contained in:
62
Apps/Scene3D/main.vp
Normal file
62
Apps/Scene3D/main.vp
Normal file
@@ -0,0 +1,62 @@
|
||||
import vpsdk.window as window
|
||||
import vpsdk.process as process
|
||||
import vpsdk.vpui as vpui
|
||||
import viperstring as string
|
||||
import vipermath
|
||||
from stdint import *
|
||||
import gfx
|
||||
import t, c
|
||||
|
||||
SCENE_W: t.CDefine = 640
|
||||
SCENE_H: t.CDefine = 360
|
||||
|
||||
_zbuf_mem: t.CArray[t.CUInt8T, SCENE_W * SCENE_H * 8]
|
||||
_fb_mem: t.CArray[t.CUInt32T, SCENE_W * SCENE_H]
|
||||
|
||||
_root_ptr: vpui.Tk | t.CPtr
|
||||
_canvas_ptr: vpui.FBCanvas | t.CPtr
|
||||
_s3d_ptr: gfx.Scene3D | t.CPtr
|
||||
_time_val: float = float(0.0)
|
||||
|
||||
def _render_thread(arg: t.CVoid | t.CPtr) -> t.CVoid:
|
||||
root: vpui.Tk | t.CPtr = _root_ptr
|
||||
canvas: vpui.FBCanvas | t.CPtr = _canvas_ptr
|
||||
s3d: gfx.Scene3D | t.CPtr = _s3d_ptr
|
||||
while root.winfo_exists():
|
||||
s3d.Render(_time_val)
|
||||
_time_val += float(0.02)
|
||||
root.update()
|
||||
process.yield_cpu()
|
||||
|
||||
@c.Attribute(t.attr.section(".text.startup"), t.attr.aligned(16))
|
||||
def _start() -> t.CInt | t.CExport:
|
||||
root: vpui.Tk = vpui.Tk()
|
||||
root.title("3D Scene")
|
||||
root.set_style(window.STYLE_WIN11)
|
||||
root.bg_color = t.CUInt32T(0x0F0F19)
|
||||
master: vpui.Tk | t.CPtr = c.Addr(root)
|
||||
|
||||
canvas: vpui.FBCanvas = vpui.FBCanvas(master, SCENE_W, SCENE_H)
|
||||
root.pack(0, vpui.PACK_TOP, vpui.FILL_BOTH, 1, 0, 0)
|
||||
|
||||
zbuf: float | t.CPtr = t.CVoid(c.Addr(_zbuf_mem), t.CPtr)
|
||||
string.memset(zbuf, 0, SCENE_W * SCENE_H * 8)
|
||||
|
||||
fb: UINT32PTR = c.Addr(_fb_mem)
|
||||
string.memset(fb, 0, SCENE_W * SCENE_H * 4)
|
||||
canvas.set_fb(fb, SCENE_W, SCENE_H)
|
||||
|
||||
s3d: gfx.Scene3D = gfx.Scene3D(fb, zbuf, SCENE_W, SCENE_H)
|
||||
|
||||
root.geometry(100, 30, SCENE_W, SCENE_H + 32)
|
||||
|
||||
_root_ptr = c.Addr(root)
|
||||
_canvas_ptr = c.Addr(canvas)
|
||||
_s3d_ptr = c.Addr(s3d)
|
||||
|
||||
process.thread_create(_render_thread, None)
|
||||
|
||||
root.mainloop()
|
||||
|
||||
process.exit(0)
|
||||
return 0
|
||||
Reference in New Issue
Block a user