]> gitweb.factorcode.org Git - factor.git/commitdiff
let gl-error know about GL_INVALID_FRAMEBUFFER_OPERATION_EXT error. add <mrt-gl-progr...
authorJoe Groff <arcata@gmail.com>
Tue, 16 Jun 2009 23:14:22 +0000 (18:14 -0500)
committerJoe Groff <arcata@gmail.com>
Tue, 16 Jun 2009 23:14:22 +0000 (18:14 -0500)
basis/opengl/opengl.factor
basis/opengl/shaders/shaders.factor

index 72ca8b8cdbbb2306d7a647aac6251b3197aea9b1..7d79516a2ce38046f068c76bc01998ce6ee538d8 100644 (file)
@@ -25,6 +25,7 @@ IN: opengl
         { HEX: 0503 "Stack overflow" }
         { HEX: 0504 "Stack underflow" }
         { HEX: 0505 "Out of memory" }
+        { HEX: 0506 "Invalid framebuffer operation" }
     } at "Unknown error" or ;
 
 TUPLE: gl-error code string ;
@@ -190,4 +191,4 @@ MACRO: set-draw-buffers ( buffers -- )
     GL_PROJECTION glMatrixMode
     glLoadIdentity
     GL_MODELVIEW glMatrixMode
-    glLoadIdentity ;
\ No newline at end of file
+    glLoadIdentity ;
index 15fab1aae066aa8db714a759c166e2538e10e430..a946fd16f4755c3b6a6c480884161ac690687975 100755 (executable)
@@ -61,10 +61,21 @@ PREDICATE: fragment-shader < gl-shader (fragment-shader?) ;
 
 ! Programs
 
+: <mrt-gl-program> ( shaders frag-data-locations -- program )
+    glCreateProgram 
+    [
+        [ swap [ glAttachShader ] with each ]
+        [ swap [ first2 swap glBindFragDataLocationEXT ] with each ] bi-curry bi*
+    ]
+    [ glLinkProgram ]
+    [ ] tri
+    gl-error ;
+
 : <gl-program> ( shaders -- program )
-    glCreateProgram swap
-    [ dupd glAttachShader ] each
-    [ glLinkProgram ] keep
+    glCreateProgram 
+    [ swap [ glAttachShader ] with each ]
+    [ glLinkProgram ]
+    [ ] tri
     gl-error ;
     
 : (gl-program?) ( object -- ? )