kmonsoor / pyglet

Automatically exported from code.google.com/p/pyglet
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

TileableTexture interchanges red and blue in some JPGs #413

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. python image_blit_test.py blocks3.jpg [see files below]
2. observe incorrect colors in upper right image (looks like red and blue
are exchanged), whereas colors are correct in lower left image [see
attached screenshot]

image_blit_test.py is attached, and contains:

from pyglet.gl import glClear, GL_COLOR_BUFFER_BIT
import pyglet
import sys

filename = sys.argv[1]

testimage = pyglet.image.load(filename)

window = pyglet.window.Window(resizable=True)

tt = pyglet.image.TileableTexture.create_for_image(testimage)

@window.event
def on_draw():
    glClear(GL_COLOR_BUFFER_BIT)

    ## testimage.blit(0,0,0) # colors are correct

    testimage.get_region(0,0,150,150).blit(0,0,0) # colors are correct

    tt.blit(150,150) # colors are wrong, with certain jpgs!

pyglet.app.run()

[end of python source file]

other attached files: 
- blocks3.jpg (example image file that exhibits the bug) 
- output screenshot (Picture 7.png). 

Note: other JPGs I tried also exhibit this bug, but PNGs I tried don't.

pyglet 1.1 with Python 2.5: Paste in the output of `python -m pyglet.info`

% python -m pyglet.info
Python
------------------------------------------------------------------------------
sys.version: 2.5.1 (r251:54863, Jan 13 2009, 10:26:13) 
[GCC 4.0.1 (Apple Inc. build 5465)]
sys.platform: darwin
os.getcwd(): [private info removed]

pyglet
------------------------------------------------------------------------------
pyglet.version: 1.1.3
pyglet.__file__: /Library/Python/2.5/site-packages/pyglet/__init__.pyc
pyglet.options['debug_trace_depth'] = 1
pyglet.options['audio'] = ('directsound', 'openal', 'alsa', 'silent')
pyglet.options['xsync'] = True
pyglet.options['debug_trace_flush'] = True
pyglet.options['debug_win32'] = False
pyglet.options['debug_gl_trace'] = False
pyglet.options['debug_x11'] = False
pyglet.options['shadow_window'] = True
pyglet.options['debug_font'] = False
pyglet.options['debug_media'] = False
pyglet.options['debug_trace'] = False
pyglet.options['debug_lib'] = False
pyglet.options['graphics_vbo'] = True
pyglet.options['vsync'] = None
pyglet.options['debug_trace_args'] = False
pyglet.options['debug_gl'] = True
pyglet.options['debug_graphics_batch'] = False
pyglet.options['font'] = ('gdiplus', 'win32')
pyglet.options['debug_texture'] = False
pyglet.options['debug_gl_trace_args'] = False

pyglet.window
------------------------------------------------------------------------------
platform: <pyglet.window.carbon.CarbonPlatform object at 0x6b1250>
display: <pyglet.window.carbon.CarbonDisplay object at 0x5a5f10>
screens[0]: CarbonScreen(x=0, y=0, width=1920, height=1200)
config['double_buffer'] = 1
config['stereo'] = 0
config['buffer_size'] = 32
config['aux_buffers'] = 0
config['sample_buffers'] = 0
config['samples'] = 0
config['red_size'] = 8
config['green_size'] = 8
config['blue_size'] = 8
config['alpha_size'] = 8
config['depth_size'] = 24
config['stencil_size'] = 0
config['accum_red_size'] = 0
config['accum_green_size'] = 0
config['accum_blue_size'] = 0
config['accum_alpha_size'] = 0
context: CarbonGLContext()

pyglet.gl.gl_info
------------------------------------------------------------------------------
gl_info.get_version(): 2.0 NVIDIA-1.5.36
gl_info.get_vendor(): NVIDIA Corporation
gl_info.get_renderer(): NVIDIA GeForce 8600M GT OpenGL Engine
gl_info.get_extensions():
   GL_APPLE_aux_depth_stencil
   GL_APPLE_client_storage
   GL_APPLE_element_array
   GL_APPLE_fence
   GL_APPLE_float_pixels
   GL_APPLE_flush_buffer_range
   GL_APPLE_flush_render
   GL_APPLE_object_purgeable
   GL_APPLE_packed_pixels
   GL_APPLE_pixel_buffer
   GL_APPLE_specular_vector
   GL_APPLE_texture_range
   GL_APPLE_transform_hint
   GL_APPLE_vertex_array_object
   GL_APPLE_vertex_array_range
   GL_APPLE_vertex_program_evaluators
   GL_APPLE_ycbcr_422
   GL_ARB_depth_texture
   GL_ARB_draw_buffers
   GL_ARB_fragment_program
   GL_ARB_fragment_program_shadow
   GL_ARB_fragment_shader
   GL_ARB_half_float_pixel
   GL_ARB_imaging
   GL_ARB_multisample
   GL_ARB_multitexture
   GL_ARB_occlusion_query
   GL_ARB_pixel_buffer_object
   GL_ARB_point_parameters
   GL_ARB_point_sprite
   GL_ARB_shader_objects
   GL_ARB_shader_texture_lod
   GL_ARB_shading_language_100
   GL_ARB_shadow
   GL_ARB_texture_border_clamp
   GL_ARB_texture_compression
   GL_ARB_texture_cube_map
   GL_ARB_texture_env_add
   GL_ARB_texture_env_combine
   GL_ARB_texture_env_crossbar
   GL_ARB_texture_env_dot3
   GL_ARB_texture_float
   GL_ARB_texture_mirrored_repeat
   GL_ARB_texture_non_power_of_two
   GL_ARB_texture_rectangle
   GL_ARB_transpose_matrix
   GL_ARB_vertex_blend
   GL_ARB_vertex_buffer_object
   GL_ARB_vertex_program
   GL_ARB_vertex_shader
   GL_ARB_window_pos
   GL_ATI_separate_stencil
   GL_ATI_texture_env_combine3
   GL_ATI_texture_float
   GL_ATI_texture_mirror_once
   GL_EXT_abgr
   GL_EXT_bgra
   GL_EXT_bindable_uniform
   GL_EXT_blend_color
   GL_EXT_blend_equation_separate
   GL_EXT_blend_func_separate
   GL_EXT_blend_minmax
   GL_EXT_blend_subtract
   GL_EXT_clip_volume_hint
   GL_EXT_compiled_vertex_array
   GL_EXT_depth_bounds_test
   GL_EXT_draw_buffers2
   GL_EXT_draw_range_elements
   GL_EXT_fog_coord
   GL_EXT_framebuffer_blit
   GL_EXT_framebuffer_multisample
   GL_EXT_framebuffer_object
   GL_EXT_geometry_shader4
   GL_EXT_gpu_program_parameters
   GL_EXT_gpu_shader4
   GL_EXT_multi_draw_arrays
   GL_EXT_packed_depth_stencil
   GL_EXT_rescale_normal
   GL_EXT_secondary_color
   GL_EXT_shadow_funcs
   GL_EXT_stencil_two_side
   GL_EXT_stencil_wrap
   GL_EXT_texture_compression_dxt1
   GL_EXT_texture_compression_s3tc
   GL_EXT_texture_env_add
   GL_EXT_texture_filter_anisotropic
   GL_EXT_texture_integer
   GL_EXT_texture_lod_bias
   GL_EXT_texture_mirror_clamp
   GL_EXT_texture_rectangle
   GL_EXT_texture_sRGB
   GL_EXT_transform_feedback
   GL_IBM_rasterpos_clip
   GL_NV_blend_square
   GL_NV_depth_clamp
   GL_NV_fog_distance
   GL_NV_fragment_program2
   GL_NV_fragment_program_option
   GL_NV_light_max_exponent
   GL_NV_multisample_filter_hint
   GL_NV_point_sprite
   GL_NV_register_combiners
   GL_NV_register_combiners2
   GL_NV_texgen_reflection
   GL_NV_texture_shader
   GL_NV_texture_shader2
   GL_NV_texture_shader3
   GL_NV_vertex_program2_option
   GL_NV_vertex_program3
   GL_SGIS_generate_mipmap
   GL_SGIS_texture_edge_clamp
   GL_SGIS_texture_lod

pyglet.gl.glu_info
------------------------------------------------------------------------------
glu_info.get_version(): 1.3 MacOSX
glu_info.get_extensions():

pyglet.gl.glx_info
------------------------------------------------------------------------------
GLX not available.

pyglet.media
------------------------------------------------------------------------------
driver: pyglet.media.drivers.openal

pyglet.media.avbin
------------------------------------------------------------------------------
Library: <CDLL '/usr/local/lib/libavbin.dylib', handle 15c1f6a0 at 15845970>
AVbin version: 5
FFmpeg revision: 13661

pyglet.media.drivers.openal
------------------------------------------------------------------------------
Library: <CDLL '/System/Library/Frameworks/OpenAL.framework/OpenAL', handle
3ee3a0 at 15836690>
Version: (1, 1)
Extensions:
   ALC_EXT_CAPTURE
   ALC_ENUMERATION_EXT
   ALC_EXT_MAC_OSX
   ALC_EXT_ASA
   ALC_EXT_ASA_DISTORTION
   ALC_EXT_ASA_ROGER_BEEP

Any additional info (platform/language/hardware) that may be relevant?

Mac OS 10.5.6 on Intel MacBookPro

The version of avbin I have probably came from Pyglet 1.1.2 (Mac dmg).
Since installing pyglet 1.1.2, I have replaced pyglet in Python library
with a symbolic link to a checkout of the 1.1-maintenance branch
(essentially the same as 1.1.3).

Original issue reported on code.google.com by ores...@gmail.com on 20 Apr 2009 at 6:37

Attachments:

GoogleCodeExporter commented 9 years ago
Reproduced. Looks like something somewhere is confusing RGBA and BGRA. Looking 
into it.

Original comment by m.e.w.ol...@gmail.com on 14 Aug 2009 at 11:24

GoogleCodeExporter commented 9 years ago
Fixed in r2451.

Original comment by m.e.w.ol...@gmail.com on 14 Aug 2009 at 12:02

GoogleCodeExporter commented 9 years ago
ported to bs_maintenance_backports branch in r2483

Original comment by benjamin...@gmail.com on 17 Aug 2009 at 1:15

GoogleCodeExporter commented 9 years ago
merged into branch pyglet-1.1-maintenance in r2496

Original comment by benjamin...@gmail.com on 19 Aug 2009 at 3:31