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
|