Lua FBO: Difference between revisions

From Spring
Jump to navigationJump to search
JK (talk | contribs)
No edit summary
JK (talk | contribs)
No edit summary
Line 42: Line 42:




==Userdata FBO==
===Userdata FBO===
   <font color=darkgreen>attachment ::= luaTex or RBO or nil or { luaTex or RBO [, num [[Lua_ConstGL#FBO_Targets|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:
    '''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


  '''fbo.depth'''  = attachment
==RBO==
  '''fbo.stencil''' = attachment
'''gl.CreateRBO'''
   '''fbo.color0''' = attachment
   ( int xsize, int ysize,
  ..
    [ {
  '''fbo.color15''' = attachment
      target = GL_RENDERBUFFER_EXT,
  '''fbo.drawbuffers''' = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT3_EXT, ..}
      format = [[Lua_ConstGL#RBO_Formats|GL_RGBA]],
  '''fbo.readbuffer'''  = GL_COLOR_ATTACHMENT0_EXT
    } ]) -> userdata [[Lua_FBO#Userdata_RBO|rbo]]
 
'''gl.DeleteRBO'''
  ( rbo ) -> nil
 
===Userdata RBO===
   read-only methods are:
    '''rbo.target''' = number
    '''rbo.format''' = [[Lua_ConstGL#RBO_Formats|number]]
    '''rbo.xsize''' = number
    '''rbo.ysize''' = number
    '''rbo.valid'''  = boolean

Revision as of 15:40, 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

RBO

gl.CreateRBO

 ( int xsize, int ysize,
   [ {
     target = GL_RENDERBUFFER_EXT,
     format = GL_RGBA,
   } ]) -> userdata rbo

gl.DeleteRBO

 ( rbo ) -> nil

Userdata RBO

 read-only methods are:
   rbo.target = number
   rbo.format = number
   rbo.xsize  = number
   rbo.ysize  = number
   rbo.valid  = boolean