1 ! Copyright (C) 2005, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel accessors sequences opengl opengl.gl assocs ;
6 TUPLE: sprite loc dim dim2 dlist texture ;
8 : <sprite> ( loc dim dim2 -- sprite )
11 : sprite-size2 ( sprite -- w h ) dim2>> first2 ;
13 : sprite-width ( sprite -- w ) dim>> first ;
15 : draw-sprite ( sprite -- )
16 GL_TEXTURE_COORD_ARRAY [
17 dup loc>> gl-translate
18 GL_TEXTURE_2D over texture>> glBindTexture
19 init-texture rect-texture-coords
20 dim2>> fill-rect-vertices
22 GL_TEXTURE_2D 0 glBindTexture
23 ] do-enabled-client-state ;
25 : make-sprite-dlist ( sprite -- id )
27 GL_COMPILE [ draw-sprite ] make-dlist
30 : init-sprite ( texture sprite -- )
32 dup make-sprite-dlist >>dlist drop ;
34 : free-sprite ( sprite -- )
35 [ dlist>> delete-dlist ]
36 [ texture>> delete-texture ] bi ;
38 : free-sprites ( sprites -- )
39 [ nip [ free-sprite ] when* ] assoc-each ;