-! (c)2009 Joe Groff bsd license
+! Copyright (C) 2009 Joe Groff.
+! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien.c-types arrays byte-arrays combinators
-destructors fry gpu gpu.buffers images kernel locals math
-opengl opengl.gl opengl.textures sequences
+destructors gpu gpu.buffers images kernel math
+opengl.gl opengl.textures sequences
specialized-arrays typed ui.gadgets.worlds variants ;
FROM: alien.c-types => float ;
SPECIALIZED-ARRAY: float
{ component-type component-type read-only initial: ubyte-components } ;
C: <texture-data> texture-data
-UNION: ?texture-data texture-data POSTPONE: f ;
-UNION: ?float-array float-array POSTPONE: f ;
VARIANT: compressed-texture-format
DXT1-RGB DXT1-RGBA DXT3 DXT5
{ length integer read-only } ;
C: <compressed-texture-data> compressed-texture-data
-UNION: ?compressed-texture-data compressed-texture-data POSTPONE: f ;
VARIANT: texture-wrap
clamp-texcoord-to-edge clamp-texcoord-to-border repeat-texcoord repeat-texcoord-mirrored ;
filter-nearest filter-linear ;
UNION: wrap-set texture-wrap sequence ;
-UNION: ?texture-filter texture-filter POSTPONE: f ;
TUPLE: texture-parameters
{ wrap wrap-set initial: { repeat-texcoord repeat-texcoord repeat-texcoord } }
{ min-filter texture-filter initial: filter-nearest }
- { min-mipmap-filter ?texture-filter initial: filter-linear }
+ { min-mipmap-filter maybe{ texture-filter } initial: filter-linear }
{ mag-filter texture-filter initial: filter-linear }
{ min-lod integer initial: -1000 }
{ max-lod integer initial: 1000 }
PRIVATE>
-GENERIC# allocate-texture 3 ( tdt level dim data -- )
+GENERIC#: allocate-texture 3 ( tdt level dim data -- )
M: texture-1d-data-target allocate-texture ( tdt level dim data -- )
[ ] [ glTexImage1D ] (allocate-texture) ;
M: texture-3d-data-target allocate-texture ( tdt level dim data -- )
[ first3 ] [ glTexImage3D ] (allocate-texture) ;
-GENERIC# allocate-compressed-texture 3 ( tdt level dim compressed-data -- )
+GENERIC#: allocate-compressed-texture 3 ( tdt level dim compressed-data -- )
M: texture-1d-data-target allocate-compressed-texture ( tdt level dim compressed-data -- )
[ ] [ glCompressedTexImage1D ] (allocate-compressed-texture) ;
M: texture-3d-data-target allocate-compressed-texture ( tdt level dim compressed-data -- )
[ first3 ] [ glCompressedTexImage3D ] (allocate-compressed-texture) ;
-GENERIC# update-texture 4 ( tdt level loc dim data -- )
+GENERIC#: update-texture 4 ( tdt level loc dim data -- )
M: texture-1d-data-target update-texture ( tdt level loc dim data -- )
[ ] [ glTexSubImage1D ] (update-texture) ;
M: texture-3d-data-target update-texture ( tdt level loc dim data -- )
[ first3 ] [ glTexSubImage3D ] (update-texture) ;
-GENERIC# update-compressed-texture 4 ( tdt level loc dim compressed-data -- )
+GENERIC#: update-compressed-texture 4 ( tdt level loc dim compressed-data -- )
M: texture-1d-data-target update-compressed-texture ( tdt level loc dim compressed-data -- )
[ ] [ glCompressedTexSubImage1D ] (update-compressed-texture) ;
{ [ dim>> ] [ bitmap>> ] [ component-order>> ] [ component-type>> ] } cleave
<texture-data> ; inline
-GENERIC# texture-dim 1 ( tdt level -- dim )
+GENERIC#: texture-dim 1 ( tdt level -- dim )
M:: texture-1d-data-target texture-dim ( tdt level -- dim )
tdt bind-tdt :> texture
M:: texture-2d-data-target texture-dim ( tdt level -- dim )
tdt bind-tdt :> texture
- tdt texture-data-gl-target level
+ tdt texture-data-gl-target level
[ GL_TEXTURE_WIDTH get-texture-int ] [ GL_TEXTURE_HEIGHT get-texture-int ] 2bi
2array ; inline
M:: texture-3d-data-target texture-dim ( tdt level -- dim )
tdt bind-tdt :> texture
- tdt texture-data-gl-target level
+ tdt texture-data-gl-target level
[ GL_TEXTURE_WIDTH get-texture-int ]
[ GL_TEXTURE_HEIGHT get-texture-int ]
[ GL_TEXTURE_DEPTH get-texture-int ] 2tri
[ texture-dim ]
[ drop texture-object [ component-order>> ] [ component-type>> ] bi f f ]
[ read-texture ] 2tri
- image boa ; inline
+ f image boa ; inline
<PRIVATE
: bind-texture ( texture -- gl-target )
texture-1d-array <texture> ; inline
: <texture-2d-array> ( component-order component-type parameters -- texture )
texture-2d-array <texture> ; inline
-