problem with headless operation (saving files)

57 views
Skip to first unread message

sevenseeker

unread,
May 8, 2009, 3:28:42 PM5/8/09
to pyglet-users
following the instructions here (http://groups.google.com/group/pyglet-
users/browse_thread/thread/6dbf631ca248eaed) I receive nothing but
images saved that are black.

I am not sure I know enough to ask the right questions. Are there
opengl states I need to set?

sevenseeker

unread,
May 11, 2009, 10:16:35 AM5/11/09
to pyglet-users
Please if anyone has any information to help, I would greatly
appreciate it. Otherwise I will have to very quickly switch to Pygame
and that will be unpleasant given our timeline.

Thank you,
Jason

Crispin Wellington

unread,
May 11, 2009, 10:34:03 AM5/11/09
to pyglet...@googlegroups.com
You need to give more information. What platform are you on. Windows,
Mac, Linux? You will need to at least get some OpenGL information. On
linux you can use 'glxinfo' to print out the OpenGL information. I am
unsure of what method to use on other platforms, but it is something
you should investigate.

What I am interested in is if your GL driver supports offscreen
buffers. Old graphics cards and drivers often do not. If yours does
not, then you can only render to a visible buffer.

Hope this gives you at least some direction.

Regards

Crispin

sevenseeker

unread,
May 11, 2009, 11:32:14 AM5/11/09
to pyglet-users
Ah, sorry I am not sure what crack I was smoking to not put that vital
info here. Thank you VERY much btw.

I am currently developing on a Mac 10.5 Powerbook Pro

However, the idea is for this to be rendered on Amazon EC2 Ubuntu 8.10
machines, thus headless and using Mesa.

ok, OpenGL capabilities of Mac are:
name of display: /tmp/launch-yFutat/:0
display: /tmp/launch-yFutat/:0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGIX_fbconfig,
GLX_MESA_copy_sub_buffer
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_visual_rating,
GLX_SGIX_fbconfig
GLX version: 1.4
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_visual_rating,
GLX_SGIX_fbconfig
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce 8600M GT OpenGL Engine
OpenGL version string: 2.0 NVIDIA-1.5.36
OpenGL shading language version string: 1.20
OpenGL extensions:
GL_ARB_transpose_matrix, GL_ARB_vertex_program,
GL_ARB_vertex_blend,
GL_ARB_window_pos, GL_ARB_shader_objects, GL_ARB_vertex_shader,
GL_ARB_shading_language_100, GL_EXT_multi_draw_arrays,
GL_EXT_clip_volume_hint, GL_EXT_rescale_normal,
GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_gpu_program_parameters, GL_EXT_geometry_shader4,
GL_EXT_transform_feedback, GL_APPLE_client_storage,
GL_APPLE_specular_vector, GL_APPLE_transform_hint,
GL_APPLE_packed_pixels,
GL_APPLE_fence, GL_APPLE_vertex_array_object,
GL_APPLE_vertex_program_evaluators, GL_APPLE_element_array,
GL_APPLE_flush_render, GL_APPLE_aux_depth_stencil,
GL_NV_texgen_reflection, GL_NV_light_max_exponent,
GL_IBM_rasterpos_clip,
GL_SGIS_generate_mipmap, GL_ARB_imaging, GL_ARB_point_parameters,
GL_ARB_texture_env_crossbar, GL_ARB_texture_border_clamp,
GL_ARB_multitexture, GL_ARB_texture_env_add,
GL_ARB_texture_cube_map,
GL_ARB_texture_env_dot3, GL_ARB_multisample,
GL_ARB_texture_env_combine,
GL_ARB_texture_compression, GL_ARB_texture_mirrored_repeat,
GL_ARB_shadow,
GL_ARB_depth_texture, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
GL_ARB_occlusion_query, GL_ARB_point_sprite,
GL_ARB_texture_non_power_of_two, GL_ARB_vertex_buffer_object,
GL_ARB_pixel_buffer_object, GL_ARB_draw_buffers,
GL_ARB_shader_texture_lod, GL_EXT_compiled_vertex_array,
GL_EXT_framebuffer_object, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXT_texture_rectangle,
GL_ARB_texture_rectangle, GL_EXT_texture_env_add,
GL_EXT_blend_color,
GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_texture_lod_bias,
GL_EXT_abgr, GL_EXT_bgra, GL_EXT_stencil_wrap,
GL_EXT_texture_filter_anisotropic, GL_EXT_secondary_color,
GL_EXT_blend_func_separate, GL_EXT_shadow_funcs,
GL_EXT_stencil_two_side,
GL_EXT_depth_bounds_test, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_sRGB,
GL_EXT_blend_equation_separate, GL_EXT_texture_mirror_clamp,
GL_EXT_packed_depth_stencil, GL_EXT_bindable_uniform,
GL_EXT_texture_integer, GL_EXT_gpu_shader4, GL_EXT_draw_buffers2,
GL_APPLE_flush_buffer_range, GL_APPLE_ycbcr_422,
GL_APPLE_vertex_array_range, GL_APPLE_texture_range,
GL_APPLE_float_pixels, GL_ATI_texture_float,
GL_ARB_texture_float,
GL_ARB_half_float_pixel, GL_APPLE_pixel_buffer,
GL_APPLE_object_purgeable,
GL_NV_point_sprite, GL_NV_register_combiners,
GL_NV_register_combiners2,
GL_NV_blend_square, GL_NV_texture_shader, GL_NV_texture_shader2,
GL_NV_texture_shader3, GL_NV_fog_distance, GL_NV_depth_clamp,
GL_NV_multisample_filter_hint, GL_NV_fragment_program_option,
GL_NV_fragment_program2, GL_NV_vertex_program2_option,
GL_NV_vertex_program3, GL_ATI_texture_mirror_once,
GL_ATI_texture_env_combine3, GL_ATI_separate_stencil,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod

Of the headless Ubuntu EC2 machine: (using xvfb)
name of display: localhost:10.0
display: localhost:10 screen: 0
direct rendering: No (If you want to find out why, try setting
LIBGL_DEBUG=verbose)
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGIX_fbconfig,
GLX_MESA_copy_sub_buffer
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_allocate_memory,
GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_OML_swap_method,
GLX_OML_sync_control,
GLX_SGI_make_current_read, GLX_SGI_swap_control,
GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGI_make_current_read,
GLX_SGIX_fbconfig,
GLX_EXT_texture_from_pixmap
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce 8600M GT OpenGL Engine
OpenGL version string: 1.4 (2.0 NVIDIA-1.5.36)
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_draw_buffers,
GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_imaging,
GL_ARB_multisample,
GL_ARB_multitexture, GL_ARB_occlusion_query,
GL_ARB_point_parameters,
GL_ARB_point_sprite, 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_mirrored_repeat, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_rectangle, GL_ARB_transpose_matrix,
GL_ARB_vertex_program,
GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, 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_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_framebuffer_object,
GL_EXT_multi_draw_arrays, GL_EXT_point_parameters,
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_edge_clamp,
GL_EXT_texture_env_add, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_rectangle,
GL_APPLE_packed_pixels, GL_ATI_draw_buffers,
GL_ATI_texture_env_combine3,
GL_ATI_texture_mirror_once, GL_ATIX_texture_env_combine3,
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
GL_NV_blend_square, GL_NV_depth_clamp, GL_NV_fog_distance,
GL_NV_fragment_program_option, GL_NV_fragment_program2,
GL_NV_light_max_exponent, GL_NV_multisample_filter_hint,
GL_NV_point_sprite, GL_NV_texgen_reflection,
GL_NV_texture_rectangle,
GL_NV_vertex_program2_option, GL_NV_vertex_program3,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod,
GL_SUN_multi_draw_arrays

Thanks,
Jason



On May 11, 9:34 am, Crispin Wellington <retrogradeor...@gmail.com>
wrote:
> You need to give more information. What platform are you on. Windows,
> Mac, Linux? You will need to at least get some OpenGL information. On
> linux you can use 'glxinfo' to print out the OpenGL information. I am
> unsure of what method to use on other platforms, but it is something
> you should investigate.
>
> What I am interested in is if your GL driver supports offscreen
> buffers. Old graphics cards and drivers often do not. If yours does
> not, then you can only render to a visible buffer.
>
> Hope this gives you at least some direction.
>
> Regards
>
> Crispin
>

Crispin Wellington

unread,
May 11, 2009, 11:22:01 PM5/11/09
to pyglet...@googlegroups.com
Does it work on the Mac at all? I guess the first task would be to get
it working on the Mac. Not sure what the problem is, but you may want
to try lighting the scene. Sometimes I get "black" GL scenes when I
fail to place a light. If you render into a window, rather than
offscreen, do you see anything?

Crispin

sevenseeker

unread,
May 12, 2009, 4:13:33 PM5/12/09
to pyglet-users
ok, sorry for the personal email... I hit the wrong button/link here
online.

Everything works great on the mac when run as Visible=True.

I finally got a new ubuntu 9.04 EC2 machine setup... this is actually
what renders whether visible is True or False.
http://imagebin.ca/view/6byWEK.html

The right image is rendered second on the entire screen so the other
image should not show.

I am playing around with different opengl states now.

Thanks once again,
Jason

On May 11, 10:22 pm, Crispin Wellington <retrogradeor...@gmail.com>
wrote:
> Does it work on the Mac at all? I guess the first task would be to get
> it working on the Mac. Not sure what the problem is, but you may want
> to try lighting the scene. Sometimes I get "black" GL scenes when I
> fail to place a light. If you render into a window, rather than
> offscreen, do you see anything?
>
> Crispin
>
> ...
>
> read more »

sevenseeker

unread,
May 12, 2009, 5:40:43 PM5/12/09
to pyglet-users
another update...
when SSH'ing into the box with '-X' AND using libgl1-mesa-swx11 (as
opposed to libgl1-mesa-glx) and 'visible=True' is set, then it all
works fine.
However, when I run with 'visible=False' then I get the image linked
above.

Here are the caps provided by that mesa lib:
root@domU-12-31-35-00-14-01:~# glxinfo
name of display: localhost:10.0
Xlib: extension "Generic Event Extension" missing on display
"localhost:10.0".
display: localhost:10 screen: 0
direct rendering: No (If you want to find out why, try setting
LIBGL_DEBUG=verbose)
server glx vendor string: Brian Paul
server glx version string: 1.4 Mesa 7.4
server glx extensions:
GLX_MESA_copy_sub_buffer, GLX_MESA_pixmap_colormap,
GLX_MESA_release_buffers, GLX_ARB_get_proc_address,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer
client glx vendor string: Brian Paul
client glx version string: 1.4 Mesa 7.4
client glx extensions:
GLX_MESA_copy_sub_buffer, GLX_MESA_pixmap_colormap,
GLX_MESA_release_buffers, GLX_ARB_get_proc_address,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer
GLX version: 1.4
GLX extensions:
GLX_MESA_copy_sub_buffer, GLX_MESA_pixmap_colormap,
GLX_MESA_release_buffers, GLX_ARB_get_proc_address,
GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer
OpenGL vendor string: Brian Paul
OpenGL renderer string: Mesa X11
OpenGL version string: 2.1 Mesa 7.4
OpenGL shading language version string: 1.20
OpenGL extensions:
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_shading_language_100, GL_ARB_shading_language_120,
GL_ARB_shadow,
GL_ARB_shadow_ambient, 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_mirrored_repeat, GL_ARB_texture_non_power_of_two,
GL_ARB_texture_rectangle, GL_ARB_transpose_matrix,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program,
GL_ARB_vertex_shader,
GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_logic_op, GL_EXT_blend_minmax,
GL_EXT_blend_subtract,
GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array,
GL_EXT_convolution,
GL_EXT_copy_texture, GL_EXT_depth_bounds_test,
GL_EXT_draw_range_elements,
GL_EXT_framebuffer_object, GL_EXT_framebuffer_blit,
GL_EXT_fog_coord,
GL_EXT_gpu_program_parameters, GL_EXT_histogram,
GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels,
GL_EXT_paletted_texture, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_polygon_offset,
GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_shared_texture_palette,
GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_subtexture,
GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
GL_EXT_texture_env_dot3, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,
GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
GL_EXT_timer_query,
GL_EXT_vertex_array, GL_3DFX_texture_compression_FXT1,
GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
GL_ATI_blend_equation_separate, GL_ATI_texture_env_combine3,
GL_ATI_texture_mirror_once, GL_ATI_fragment_shader,
GL_ATI_separate_stencil, GL_IBM_multimode_draw_arrays,
GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,
GL_INGR_blend_func_separate, GL_MESA_pack_invert,
GL_MESA_program_debug,
GL_MESA_resize_buffers, GL_MESA_texture_array,
GL_MESA_ycbcr_texture,
GL_MESA_window_pos, GL_NV_blend_square, GL_NV_fragment_program,
GL_NV_light_max_exponent, GL_NV_point_sprite,
GL_NV_texture_rectangle,
GL_NV_texgen_reflection, GL_NV_vertex_program,
GL_NV_vertex_program1_1,
GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table,
GL_SGI_texture_color_table, GL_SGIS_generate_mipmap,
GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow,
GL_SGIX_shadow_ambient, GL_SUN_multi_draw_arrays

Thanks again,
Jason

On May 12, 3:13 pm, sevenseeker <jtgal...@gmail.com> wrote:
> ok, sorry for the personal email... I hit the wrong button/link here
> online.
>
> Everything works great on the mac when run as Visible=True.
>
> I finally got a new ubuntu 9.04 EC2 machine setup... this is actually
> what renders whether visible is True or False.http://imagebin.ca/view/6byWEK.html
> ...
>
> read more »

Andrew Straw

unread,
May 12, 2009, 6:11:23 PM5/12/09
to pyglet...@googlegroups.com
If you ssh in with '-X', you're actually rendering OpenGL on your local
computer. You should use '-x' if you want to test the EC2 instance. You
may also be interested in Xvfb.

Alex Holkner

unread,
May 12, 2009, 6:18:47 PM5/12/09
to pyglet...@googlegroups.com
pyglet has no support for rendering offscreen, so any success you have
with this technique is by chance, and not necessarily portable. Having
said that, ensure you call glFinish before reading the framebuffer.

There is an image_convert.py example in the pyglet source distribution
that may be helpful.

Alex.

sevenseeker

unread,
May 12, 2009, 10:46:43 PM5/12/09
to pyglet-users
ahh, ok... I will try with -x
I have Xvfb on there, but am unsure how to set it up properly. It
looks like my solution is to have a session of xvfb up and running
when the box runs my rendering engine thingamahoochie.

If I am not grossly misunderstanding this, then rendering with
visible=True will 'work' but just have nothing to display to (sent to
display with no screen I guess) and should work.

sevenseeker

unread,
May 12, 2009, 10:47:22 PM5/12/09
to pyglet-users
ok, I will look at that, I appreciate everyone's help. glFinish, ok,
got it... thanks again.

jason

On May 12, 5:18 pm, Alex Holkner <alex.holk...@gmail.com> wrote:
> pyglet has no support for rendering offscreen, so any success you have  
> with this technique is by chance, and not necessarily portable. Having  
> said that, ensure you call glFinish before reading the framebuffer.
>
> There is an image_convert.py example in the pyglet source distribution  
> that may be helpful.
>
> Alex.
>

sevenseeker

unread,
May 13, 2009, 9:51:31 PM5/13/09
to pyglet-users
This was indeed the answer. I finally found some simple instructions
on how to use Xvfb and everything except alpha channel rendering and
saving is kosher.

Thank you everyone, for your help and patience to a clueless newb.

On May 12, 5:11 pm, Andrew Straw <ast...@caltech.edu> wrote:
Reply all
Reply to author
Forward
0 new messages