hey spheres, don't go run off the cliff if you didn't initialize
parent
eb4a6cbe7d
commit
9b887c7e4c
|
@ -113,7 +113,7 @@ main()
|
||||||
TUPLE: spheres-gadget < demo-gadget
|
TUPLE: spheres-gadget < demo-gadget
|
||||||
plane-program solid-sphere-program texture-sphere-program
|
plane-program solid-sphere-program texture-sphere-program
|
||||||
reflection-framebuffer reflection-depthbuffer
|
reflection-framebuffer reflection-depthbuffer
|
||||||
reflection-texture ;
|
reflection-texture initialized? ;
|
||||||
|
|
||||||
: <spheres-gadget> ( -- gadget )
|
: <spheres-gadget> ( -- gadget )
|
||||||
20.0 10.0 20.0 spheres-gadget new-demo-gadget ;
|
20.0 10.0 20.0 spheres-gadget new-demo-gadget ;
|
||||||
|
@ -182,9 +182,11 @@ M: spheres-gadget graft* ( gadget -- )
|
||||||
(make-reflection-texture) >>reflection-texture
|
(make-reflection-texture) >>reflection-texture
|
||||||
(make-reflection-depthbuffer) [ >>reflection-depthbuffer ] keep
|
(make-reflection-depthbuffer) [ >>reflection-depthbuffer ] keep
|
||||||
(make-reflection-framebuffer) >>reflection-framebuffer
|
(make-reflection-framebuffer) >>reflection-framebuffer
|
||||||
|
t >>initialized?
|
||||||
drop ;
|
drop ;
|
||||||
|
|
||||||
M: spheres-gadget ungraft* ( gadget -- )
|
M: spheres-gadget ungraft* ( gadget -- )
|
||||||
|
f >>initialized?
|
||||||
dup find-gl-context
|
dup find-gl-context
|
||||||
{
|
{
|
||||||
[ reflection-framebuffer>> [ delete-framebuffer ] when* ]
|
[ reflection-framebuffer>> [ delete-framebuffer ] when* ]
|
||||||
|
@ -238,9 +240,8 @@ M: spheres-gadget pref-dim* ( gadget -- dim )
|
||||||
] bi ;
|
] bi ;
|
||||||
|
|
||||||
: reflection-frustum ( gadget -- -x x -y y near far )
|
: reflection-frustum ( gadget -- -x x -y y near far )
|
||||||
[ near-plane ] [ far-plane ] bi [
|
[ near-plane ] [ far-plane ] bi
|
||||||
drop dup [ -+ ] bi@
|
[ drop dup [ -+ ] bi@ ] 2keep ;
|
||||||
] 2keep ;
|
|
||||||
|
|
||||||
: (reflection-face) ( gadget face -- )
|
: (reflection-face) ( gadget face -- )
|
||||||
swap reflection-texture>> >r >r
|
swap reflection-texture>> >r >r
|
||||||
|
@ -280,7 +281,7 @@ M: spheres-gadget pref-dim* ( gadget -- dim )
|
||||||
[ dim>> 0 0 rot first2 glViewport ]
|
[ dim>> 0 0 rot first2 glViewport ]
|
||||||
} cleave ] with-framebuffer ;
|
} cleave ] with-framebuffer ;
|
||||||
|
|
||||||
M: spheres-gadget draw-gadget* ( gadget -- )
|
: (draw-gadget) ( gadget -- )
|
||||||
GL_DEPTH_TEST glEnable
|
GL_DEPTH_TEST glEnable
|
||||||
GL_SCISSOR_TEST glDisable
|
GL_SCISSOR_TEST glDisable
|
||||||
0.15 0.15 1.0 1.0 glClearColor {
|
0.15 0.15 1.0 1.0 glClearColor {
|
||||||
|
@ -297,6 +298,9 @@ M: spheres-gadget draw-gadget* ( gadget -- )
|
||||||
]
|
]
|
||||||
} cleave ;
|
} cleave ;
|
||||||
|
|
||||||
|
M: spheres-gadget draw-gadget* ( gadget -- )
|
||||||
|
dup initialized?>> [ (draw-gadget) ] [ drop ] if ;
|
||||||
|
|
||||||
: spheres-window ( -- )
|
: spheres-window ( -- )
|
||||||
[ <spheres-gadget> "Spheres" open-window ] with-ui ;
|
[ <spheres-gadget> "Spheres" open-window ] with-ui ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue