]> gitweb.factorcode.org Git - factor.git/commitdiff
Don't use glTexSubImage2D unless we really have to
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 9 Apr 2009 13:23:05 +0000 (08:23 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 9 Apr 2009 13:23:05 +0000 (08:23 -0500)
basis/opengl/textures/textures.factor

index e13e99e10f320d6279896fee7124af602125e1b3..1900deb5b80090379520207d0b69677759ebd29e 100755 (executable)
@@ -36,10 +36,12 @@ TUPLE: single-texture image dim loc texture-coords texture display-list disposed
         [ next-power-of-2 ] map
     ] unless ;
 
-: (tex-image) ( image -- )
-    [ GL_TEXTURE_2D 0 GL_RGBA ] dip
-    [ dim>> adjust-texture-dim first2 0 ]
-    [ component-order>> component-order>format f ] bi
+: (tex-image) ( image bitmap -- )
+    [
+        [ GL_TEXTURE_2D 0 GL_RGBA ] dip
+        [ dim>> adjust-texture-dim first2 0 ]
+        [ component-order>> component-order>format ] bi
+    ] dip
     glTexImage2D ;
 
 : (tex-sub-image) ( image -- )
@@ -53,7 +55,9 @@ TUPLE: single-texture image dim loc texture-coords texture display-list disposed
     gen-texture [
         GL_TEXTURE_BIT [
             GL_TEXTURE_2D swap glBindTexture
-            [ (tex-image) ] [ (tex-sub-image) ] bi
+            non-power-of-2-textures? get
+            [ dup bitmap>> (tex-image) ]
+            [ [ f (tex-image) ] [ (tex-sub-image) ] bi ] if
         ] do-attribs
     ] keep ;