1"""Convenience API for using Frame Buffer Objects""" 2from OpenGL.extensions import alternate 3from OpenGL.GL.ARB.framebuffer_object import * 4from OpenGL.GL.EXT.framebuffer_object import * 5from OpenGL.GL.EXT.framebuffer_multisample import * 6from OpenGL.GL.EXT.framebuffer_blit import * 7 8glBindFramebuffer = alternate(glBindFramebuffer,glBindFramebufferEXT) 9glBindRenderbuffer = alternate( glBindRenderbuffer, glBindRenderbufferEXT ) 10glCheckFramebufferStatus = alternate( glCheckFramebufferStatus, glCheckFramebufferStatusEXT ) 11glDeleteFramebuffers = alternate( glDeleteFramebuffers, glDeleteFramebuffersEXT ) 12glDeleteRenderbuffers = alternate( glDeleteRenderbuffers, glDeleteRenderbuffersEXT ) 13glFramebufferRenderbuffer = alternate( glFramebufferRenderbuffer, glFramebufferRenderbufferEXT ) 14glFramebufferTexture1D = alternate( glFramebufferTexture1D, glFramebufferTexture1DEXT ) 15glFramebufferTexture2D = alternate( glFramebufferTexture2D, glFramebufferTexture2DEXT ) 16glFramebufferTexture3D = alternate( glFramebufferTexture3D, glFramebufferTexture3DEXT ) 17glGenFramebuffers = alternate( glGenFramebuffers, glGenFramebuffersEXT ) 18glGenRenderbuffers = alternate( glGenRenderbuffers, glGenRenderbuffersEXT ) 19glGenerateMipmap = alternate( glGenerateMipmap, glGenerateMipmapEXT ) 20glGetFramebufferAttachmentParameteriv = alternate( glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameterivEXT ) 21glGetRenderbufferParameteriv = alternate( glGetRenderbufferParameteriv, glGetRenderbufferParameterivEXT ) 22glIsFramebuffer = alternate( glIsFramebuffer, glIsFramebufferEXT ) 23glIsRenderbuffer = alternate( glIsRenderbuffer, glIsRenderbufferEXT ) 24glRenderbufferStorage = alternate( glRenderbufferStorage, glRenderbufferStorageEXT ) 25 26glBlitFramebuffer = alternate( glBlitFramebuffer, glBlitFramebufferEXT ) 27glRenderbufferStorageMultisample = alternate( glRenderbufferStorageMultisample, glRenderbufferStorageMultisampleEXT ) 28 29# this entry point is new to the ARB version of the extensions 30#glFramebufferTextureLayer = alternate( glFramebufferTextureLayer, glFramebufferTextureLayerEXT ) 31 32 33def checkFramebufferStatus(): 34 """Utility method to check status and raise errors""" 35 status = glCheckFramebufferStatus( GL_FRAMEBUFFER ) 36 if status == GL_FRAMEBUFFER_COMPLETE: 37 return True 38 from OpenGL.error import GLError 39 description = None 40 for error_constant in [ 41 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT, 42 GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, 43 GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS, 44 GL_FRAMEBUFFER_INCOMPLETE_FORMATS, 45 GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER, 46 GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER, 47 GL_FRAMEBUFFER_UNSUPPORTED, 48 ]: 49 if status == error_constant: 50 status = error_constant 51 description = str(status) 52 raise GLError( 53 err=status, 54 result=status, 55 baseOperation=glCheckFramebufferStatus, 56 description=description, 57 ) 58