hey spheres, don't go run off the cliff if you didn't initialize

db4
Joe Groff 2008-12-08 12:51:52 -08:00
parent eb4a6cbe7d
commit 9b887c7e4c
1 changed files with 9 additions and 5 deletions

View File

@ -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 ;