phrohdoh / OpenRA

GNU General Public License v3.0
23 stars 3 forks source link

[bug]openGL Error when loading a skirmish game. #59

Open chenjiasheng opened 8 years ago

chenjiasheng commented 8 years ago

revision: da292f6ecda576469805b50d227672e25e4cd033 environment:AMD 64, WIN7 64bit, visual studio 2015 description:When i took the first try to load a skimish game using the default map and setting, the game load failed after a few seconds. But the problem won't reoccur when I restart the program and recreate the skirmish game. In the end, thank you so much, finally i started my first openRA2 game, It's exciting! \ Exception Information:** System.InvalidOperationException HResult=-2146233079 Message=OpenGL Error: See graphics.log for details. Source=OpenRA.Platforms.Default StackTrace: OpenRA.Platforms.Default.ErrorHandler.CheckGlError() D:\OpenRA\OpenRA.Platforms.Default\ErrorHandler.cs:47 OpenRA.Platforms.Default.Texture.SetData(Byte[] colors, Int32 width, Int32 height) D:\OpenRA\OpenRA.Platforms.Default\Texture.cs:98 OpenRA.Graphics.Sheet.GetTexture() D:\OpenRA\OpenRA.Game\Graphics\Sheet.cs:75 OpenRA.Graphics.SpriteRenderer.DrawVertexBuffer(IVertexBuffer`1 buffer, Int32 start, Int32 length, PrimitiveType type, Sheet sheet, BlendMode blendMode) D:\OpenRA\OpenRA.Game\Graphics\SpriteRenderer.cs:105 OpenRA.Graphics.TerrainSpriteLayer.Draw(Viewport viewport) D:\OpenRA\OpenRA.Game\Graphics\TerrainSpriteLayer.cs:124 OpenRA.Graphics.TerrainRenderer.Draw(WorldRenderer wr, Viewport viewport) D:\OpenRA\OpenRA.Game\Graphics\TerrainRenderer.cs:44 OpenRA.Graphics.WorldRenderer.Draw() D:\OpenRA\OpenRA.Game\Graphics\WorldRenderer.cs:147 OpenRA.Game.RenderTick() D:\OpenRA\OpenRA.Game\Game.cs:538 OpenRA.Game.Loop() D:\OpenRA\OpenRA.Game\Game.cs:666 OpenRA.Game.Run() D:\OpenRA\OpenRA.Game\Game.cs:684 OpenRA.Program.Run(String[] args) D:\OpenRA\OpenRA.Game\Support\Program.cs:117 OpenRA.Program.Main(String[] args) D:\OpenRA\OpenRA.Game\Support\Program.cs:33 InnerException:

content of graphics.log(.log postfixed files cannot be insert here so i paste the content): GL Error: OutOfMemory 在 OpenRA.Platforms.Default.ErrorHandler.CheckGlError() 在 OpenRA.Platforms.Default.Texture.SetData(Byte[] colors, Int32 width, Int32 height) 在 OpenRA.Graphics.Sheet.GetTexture() 在 OpenRA.Graphics.SpriteRenderer.DrawVertexBuffer(IVertexBuffer`1 buffer, Int32 start, Int32 length, PrimitiveType type, Sheet sheet, BlendMode blendMode) 在 OpenRA.Graphics.TerrainSpriteLayer.Draw(Viewport viewport) 在 OpenRA.Graphics.TerrainRenderer.Draw(WorldRenderer wr, Viewport viewport) 在 OpenRA.Graphics.WorldRenderer.Draw() 在 OpenRA.Game.RenderTick() 在 OpenRA.Game.Loop() 在 OpenRA.Game.Run() 在 OpenRA.Program.Run(String[] args) 在 OpenRA.Program.Main(String[] args)

OpenGL Information: Vendor: ATI Technologies Inc. Renderer: AMD Radeon HD 6700 Series GL Version: 4.2.11566 Compatibility Profile Context Shader Version: 4.20 Available extensions: GL_AMDX_debug_output GL_AMDX_vertex_shader_tessellator GL_AMD_conservative_depth GL_AMD_debug_output GL_AMD_depth_clamp_separate GL_AMD_draw_buffers_blend GL_AMD_multi_draw_indirect GL_AMD_name_gen_delete GL_AMD_performance_monitor GL_AMD_pinned_memory GL_AMD_sample_positions GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_stencil_export GL_AMD_shader_trace GL_AMD_texture_cube_map_array GL_AMD_texture_texture4 GL_AMD_transform_feedback3_lines_triangles GL_AMD_vertex_shader_layer GL_AMD_vertex_shader_tessellator GL_AMD_vertex_shader_viewport_index GL_ARB_ES2_compatibility GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_color_buffer_float GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_indirect GL_ARB_draw_instanced GL_ARB_explicit_attrib_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_get_program_binary GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_provoking_vertex GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counters GL_ARB_shader_bit_encoding GL_ARB_shader_image_load_store GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_stencil_export GL_ARB_shader_subroutine GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_shadow_ambient GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_compression GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array 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_gather GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_snorm GL_ARB_texture_storage GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_envmap_bumpmap GL_ATI_fragment_shader GL_ATI_meminfo GL_ATI_separate_stencil GL_ATI_texture_compression_3dc 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_compiled_vertex_array GL_EXT_copy_buffer GL_EXT_copy_texture GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_histogram GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shader_image_load_store GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_EXT_subtexture GL_EXT_texgen_reflection GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_buffer_object GL_EXT_texture_compression_bptc GL_EXT_texture_compression_latc GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_add GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_storage GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_blend_square GL_NV_conditional_render GL_NV_copy_depth_to_color GL_NV_copy_image GL_NV_explicit_multisample GL_NV_float_buffer GL_NV_half_float GL_NV_primitive_restart GL_NV_texgen_reflection GL_NV_texture_barrier GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SUN_multi_draw_arrays GL_WIN_swap_hint WGL_EXT_swap_control

penev92 commented 8 years ago

Interesting. I thought that only happens on Intel HD 3000. That's not good :/

phrohdoh commented 8 years ago

Hey there, thanks for the detailed report! @penev is this the same issue you are having, or do you just not get rendered terrain?

penev92 commented 8 years ago

This sounds like the one I'm getting.

phrohdoh commented 8 years ago

This is majorly unfortunate. Seems RA2 does need some special time set aside for sheet optimizations.

RoosterDragon commented 8 years ago

OpenRA/OpenRA#9627 will buy you a good ~250 MB to play with - but yeah after that you need to majorly optimize those sheets somehow - they're huge and there's too many.

Alternatively OpenRA needs to cache stuff a bit less (like, say, sheets for tilesets we're not using right now) so there's less memory pressure at any given time.

chenjiasheng commented 8 years ago

@Phrohdoh when i succeed in restarting the game, however, the terrain is not rendered. i can see only grids, cross lines on the terrain but no grass or dirt.

phrohdoh commented 8 years ago

This is indeed the issue @penev is running into. The issue here is that RA2 uses a lot of texture space and we don't handle that properly as the other mods do not come close to the amount of art that RA2 has.