Re: [PyOpenGL-Users] glReadPixels
Brought to you by:
mcfletch
From: Mike C. F. <mcf...@vr...> - 2009-08-16 23:13:28
|
Ian Mallett wrote: > Hello, > > So, I'm using glReadPixels(...) to get data for a screenshot. I would > really like to be able to get data from any framebuffer. Currently, > though, I can only get data from the screen framebuffer (or > GL_COLOR_ATTACHMENT0_EXT). I looked at glReadBuffer. I'm using > PyGame and PyOpenGL, and glGetString(GL_READ_BUFFER) returns None. > glReadBuffer(GL_BACK) crashes. > What's going on? Don't have your precise code. Just added a glReadBuffer test to PyOpenGL's tests modules, seems to work here, though my test code doesn't do anything particularly interesting: def test_glDrawBuffers_list_valid( self ): """Test that glDrawBuffers with list argument where value is set""" previous = glGetIntegerv( GL_READ_BUFFER ) fbo = glGenFramebuffersEXT(1) glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo) try: img1,img2 = glGenTextures(2) for img in img1,img2: glBindTexture( GL_TEXTURE_2D, img ) glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB8, 300, 300, 0, GL_RGB, GL_INT, None # no data transferred ) glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, img1, 0 ) glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_2D, img2, 0 ) a_type = constants.GLenum*2 drawingBuffers = a_type( GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, ) glDrawBuffers(2, drawingBuffers ) glReadBuffer( GL_COLOR_ATTACHMENT1_EXT ) pixels = glReadPixels( 0,0, 10,10, GL_RGB, GL_UNSIGNED_BYTE ) assert len(pixels) == 300, len(pixels) finally: glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 ) glReadBuffer( previous ) Can you give me a script that shows the failure? Good luck, Mike -- ________________________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://www.vrplumber.com http://blog.vrplumber.com |