Lua FBO: Difference between revisions

From Spring
Jump to navigationJump to search
JK (talk | contribs)
JK (talk | contribs)
No edit summary
Line 1: Line 1:
== FBO ==
== FBO ==
'''gl.CreateFBO'''
'''gl.CreateFBO'''
   ( [ table initialization ] ) -> userdata fbo
   ( [ table initialization ] ) -> userdata [[Lua_FBO#Userdata_FBO|fbo]]
<font color=darkgreen>
<font color=darkgreen>
   initialization table can contain:
   initialization table can contain:


     attachment ::= luaTex or RBO or nil or { luaTex [, num target [, num level ] ] }
     attachment ::= luaTex or RBO or nil or { luaTex [, num [[Lua_ConstGL#FBO_Targets|target]] [, num level ] ] }


     {
     {
Line 19: Line 19:
</font>
</font>


'''gl.DeleteFBO''' <font color=darkgreen>(this doesn't delete the attached objects!)</font>
'''gl.DeleteFBO''' <font color=darkgreen>(This doesn't delete the attached objects!)</font>
   ( fbo ) -> nil
   ( fbo ) -> nil


'''gl.IsValidFBO''' <font color=darkgreen>(search the internet for glCheckFramebufferStatusEXT to learn more about the status param)</font>
'''gl.IsValidFBO'''
   ( fbo [, number target ] ) -> boolean valid [, number status ]
   ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] ] ) -> boolean valid [, number [[Lua_ConstGL#FBO_Status|status]] ]


'''gl.ActiveFBO'''
'''gl.ActiveFBO'''
   ( fbo [, number target] [, boolean loadIdentities ] , lua_function, arg1, arg2, ... ) -> nil
   ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] ] [, boolean identities ] , lua_function, arg1, arg2, ... ) -> nil


'''gl.UnsafeSetFBO''' <font color=darkgreen>(similar to gl.ActiveFBO(). </font><font color=red>NOTE:</font><font color=darkgreen> don't forget to unbind your FBO!)</font>
'''gl.UnsafeSetFBO''' <font color=darkgreen>(Binds a FBO like gl.ActiveFBO() does, but you have to unbind it yourself!)</font>
   ( nil [, number target = GL_FRAMEBUFFER_EXT ] ) -> nil <font color=darkgreen>(this will bind the screenbuffer)</font>
   ( nil [, number [[Lua_ConstGL#FBO_Targets|target]] = GL_FRAMEBUFFER_EXT ] ) -> nil <font color=darkgreen>(Bind default screenbuffer)</font>
   ( fbo [, number target = fbo.target ] ) -> nil
   ( fbo [, number [[Lua_ConstGL#FBO_Targets|target]] = fbo.target ] ) -> nil


'''gl.BlitFBO''' <font color=red>needs GLEW_EXT_framebuffer_blit</font>
'''gl.BlitFBO''' <font color=red>needs GLEW_EXT_framebuffer_blit</font>
   ( int x0Src,y0Src,x1Src,y1Src, int x0Dst,y0Dst,x1Dst,y1Dst
   ( int x0Src,y0Src,x1Src,y1Src,
     [, number mask = GL_COLOR_BUFFER_BIT [, number filter = GL_NEAREST ] ] ) -> nil
    int x0Dst,y0Dst,x1Dst,y1Dst
     [, number mask = [[Lua_ConstGL#Clear_Bits|GL_COLOR_BUFFER_BIT]] [, number filter = GL_NEAREST ] ] ) -> nil


   ( <font color=yellow>fboSrc</font>, int x0Src,y0Src,x1Src,y1Src, <font color=yellow>fboDst</font>, int x0Dst,y0Dst,x1Dst,y1Dst
   ( fboSrc , int x0Src,y0Src,x1Src,y1Src,
     [, number mask = GL_COLOR_BUFFER_BIT [, number filter = GL_NEAREST ] ] ) -> nil
    fboDst , int x0Dst,y0Dst,x1Dst,y1Dst
     [, number mask = [[Lua_ConstGL#Clear_Bits|GL_COLOR_BUFFER_BIT]] [, number filter = GL_NEAREST ] ] ) -> nil




==Userdata FBO==
==Userdata FBO==
   <font color=darkgreen>attachment ::= luaTex or RBO or nil or { luaTex or RBO [, num target [, num level ]] }</font>
   <font color=darkgreen>attachment ::= luaTex or RBO or nil or { luaTex or RBO [, num [[Lua_ConstGL#FBO_Targets|target]] [, num level ]] }</font>


   write-only methods are:
   write-only methods are:

Revision as of 15:16, 5 March 2008

FBO

gl.CreateFBO

 ( [ table initialization ] ) -> userdata fbo

 initialization table can contain:
   attachment ::= luaTex or RBO or nil or { luaTex [, num target [, num level ] ] }
   {
     depth   = attachment,
     stencil = attachment,
     color0  = attachment,
     color1  = attachment,
     color2  = attachment,
     ..
     color15 = attachment,
     drawbuffers = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
   }

gl.DeleteFBO (This doesn't delete the attached objects!)

 ( fbo ) -> nil

gl.IsValidFBO

 ( fbo [, number target ] ) -> boolean valid [, number status ]

gl.ActiveFBO

 ( fbo [, number target ] [, boolean identities ] , lua_function, arg1, arg2, ... ) -> nil

gl.UnsafeSetFBO (Binds a FBO like gl.ActiveFBO() does, but you have to unbind it yourself!)

 ( nil [, number target = GL_FRAMEBUFFER_EXT ] ) -> nil (Bind default screenbuffer)
 ( fbo [, number target = fbo.target ] ) -> nil

gl.BlitFBO needs GLEW_EXT_framebuffer_blit

 ( int x0Src,y0Src,x1Src,y1Src,
   int x0Dst,y0Dst,x1Dst,y1Dst
   [, number mask = GL_COLOR_BUFFER_BIT [, number filter = GL_NEAREST ] ] ) -> nil
 ( fboSrc , int x0Src,y0Src,x1Src,y1Src,
   fboDst , int x0Dst,y0Dst,x1Dst,y1Dst
   [, number mask = GL_COLOR_BUFFER_BIT [, number filter = GL_NEAREST ] ] ) -> nil


Userdata FBO

  attachment ::= luaTex or RBO or nil or { luaTex or RBO [, num target [, num level ]] }
 write-only methods are:
 fbo.depth   = attachment
 fbo.stencil = attachment
 fbo.color0  = attachment
  ..
 fbo.color15 = attachment
 fbo.drawbuffers = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
 fbo.readbuffer  = GL_COLOR_ATTACHMENT0_EXT