let gl-error know about GL_INVALID_FRAMEBUFFER_OPERATION_EXT error. add <mrt-gl-program> helper word to link a GL program with named multiple render targets

db4
Joe Groff 2009-06-16 18:14:22 -05:00
parent 226c76aa1f
commit 19d77c5193
2 changed files with 16 additions and 4 deletions

View File

@ -25,6 +25,7 @@ IN: opengl
{ HEX: 0503 "Stack overflow" } { HEX: 0503 "Stack overflow" }
{ HEX: 0504 "Stack underflow" } { HEX: 0504 "Stack underflow" }
{ HEX: 0505 "Out of memory" } { HEX: 0505 "Out of memory" }
{ HEX: 0506 "Invalid framebuffer operation" }
} at "Unknown error" or ; } at "Unknown error" or ;
TUPLE: gl-error code string ; TUPLE: gl-error code string ;
@ -190,4 +191,4 @@ MACRO: set-draw-buffers ( buffers -- )
GL_PROJECTION glMatrixMode GL_PROJECTION glMatrixMode
glLoadIdentity glLoadIdentity
GL_MODELVIEW glMatrixMode GL_MODELVIEW glMatrixMode
glLoadIdentity ; glLoadIdentity ;

View File

@ -61,10 +61,21 @@ PREDICATE: fragment-shader < gl-shader (fragment-shader?) ;
! Programs ! 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 ) : <gl-program> ( shaders -- program )
glCreateProgram swap glCreateProgram
[ dupd glAttachShader ] each [ swap [ glAttachShader ] with each ]
[ glLinkProgram ] keep [ glLinkProgram ]
[ ] tri
gl-error ; gl-error ;
: (gl-program?) ( object -- ? ) : (gl-program?) ( object -- ? )