Libgdx not using Opengl ES 2.0

7k views Asked by At

Preferably, I'd like to use OpenGL ES 2.0 for a new 3d game I started making. Anyway, I've been developing it on an Ubuntu PC (not top-of-the-line but decent) I bought in 2010.

Gdx.graphics.isGL20Available() returns false, and I'm quite sure my drivers support 3.3.0. Here is what I'm receiving from glxinfo:

name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, 
GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, 
GLX_EXT_swap_control, GLX_EXT_texture_from_pixmap, GLX_ARB_create_context, 
GLX_ARB_create_context_profile, GLX_EXT_create_context_es2_profile, 
GLX_ARB_create_context_robustness, GLX_ARB_multisample, 
GLX_NV_float_buffer, GLX_ARB_fbconfig_float, GLX_EXT_framebuffer_sRGB
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info, 
GLX_EXT_visual_rating, GLX_EXT_import_context, GLX_SGI_video_sync, 
GLX_NV_swap_group, GLX_NV_video_out, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
GLX_SGI_swap_control, GLX_EXT_swap_control, GLX_ARB_create_context, 
GLX_ARB_create_context_profile, GLX_NV_float_buffer, 
GLX_ARB_fbconfig_float, GLX_EXT_fbconfig_packed_float, 
GLX_EXT_texture_from_pixmap, GLX_EXT_framebuffer_sRGB, 
GLX_NV_present_video, GLX_NV_copy_image, GLX_NV_multisample_coverage, 
GLX_NV_video_capture, GLX_EXT_create_context_es2_profile, 
GLX_ARB_create_context_robustness
GLX version: 1.4
GLX extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, 
GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, 
GLX_EXT_swap_control, GLX_EXT_texture_from_pixmap, GLX_ARB_create_context, 
GLX_ARB_create_context_profile, GLX_EXT_create_context_es2_profile, 
GLX_ARB_create_context_robustness, GLX_ARB_multisample, 
GLX_NV_float_buffer, GLX_ARB_fbconfig_float, GLX_EXT_framebuffer_sRGB, 
GLX_ARB_get_proc_address
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 220/PCI/SSE2
OpenGL version string: 3.3.0 NVIDIA 260.19.06
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL extensions:
GL_ARB_blend_func_extended, GL_ARB_color_buffer_float, 
GL_ARB_compatibility, 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_instanced, GL_ARB_ES2_compatibility, 
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_half_float_pixel, 
GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_instanced_arrays, 
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_robustness, GL_ARB_sample_shading, 
GL_ARB_sampler_objects, GL_ARB_seamless_cube_map, 
GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding, 
GL_ARB_shader_objects, GL_ARB_shading_language_100, GL_ARB_shadow, 
GL_ARB_sync, GL_ARB_texture_border_clamp, GL_ARB_texture_buffer_object, 
GL_ARB_texture_compression, 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_swizzle, GL_ARB_timer_query, GL_ARB_transform_feedback2, 
GL_ARB_transpose_matrix, GL_ARB_uniform_buffer_object, 
GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, 
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_texture_float, 
GL_ATI_texture_mirror_once, GL_S3_s3tc, GL_EXT_texture_env_add, 
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_Cg_shader, GL_EXT_depth_bounds_test, 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_EXTX_framebuffer_mixed_formats, GL_EXT_framebuffer_object, 
GL_EXT_framebuffer_sRGB, 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_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_shader_objects, 
GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, 
GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_texture3D, 
GL_EXT_texture_array, GL_EXT_texture_buffer_object, 
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_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_shared_exponent, GL_EXT_texture_sRGB, 
GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_transform_feedback2, 
GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_IBM_rasterpos_clip, 
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_depth_buffer_float, GL_NV_depth_clamp, GL_NV_explicit_multisample, 
GL_NV_fence, GL_NV_float_buffer, GL_NV_fog_distance, 
GL_NV_fragment_program, GL_NV_fragment_program_option, 
GL_NV_fragment_program2, GL_NV_framebuffer_multisample_coverage, 
GL_NV_geometry_shader4, GL_NV_gpu_program4, GL_NV_gpu_program4_1, 
GL_NV_half_float, GL_NV_light_max_exponent, GL_NV_multisample_coverage, 
GL_NV_multisample_filter_hint, GL_NV_occlusion_query, 
GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object, 
GL_NV_parameter_buffer_object2, GL_NV_pixel_data_range, 
GL_NV_point_sprite, GL_NV_primitive_restart, GL_NV_register_combiners, 
GL_NV_register_combiners2, GL_NV_shader_buffer_load, 
GL_NV_texgen_reflection, GL_NV_texture_barrier, 
GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4, 
GL_NV_texture_expand_normal, GL_NV_texture_multisample, 
GL_NV_texture_rectangle, GL_NV_texture_shader, GL_NV_texture_shader2, 
GL_NV_texture_shader3, GL_NV_transform_feedback, 
GL_NV_transform_feedback2, GL_NV_vdpau_interop, GL_NV_vertex_array_range, 
GL_NV_vertex_array_range2, GL_NV_vertex_buffer_unified_memory, 
GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2, 
GL_NV_vertex_program2_option, GL_NV_vertex_program3, 
GL_NVX_conditional_render, GL_NVX_gpu_memory_info, 
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture, 
GL_SGIX_shadow, GL_SUN_slice_accum

And a lot more that does not have to do with the version string and/or extensions. I have all the extensions needed for Opengl ES 2.0 and my driver is updated to 3.3.0 (OpenGL 3.0->2.0 ES approximately). Is it because my software rasterizer is old? If so, there are probably others in the same situation (I don't even think there are that many Windows installations which are updated past 1.1), and I'd like to support them too. What is the best possible solution?

1

There are 1 answers

1
Ludevik On BEST ANSWER

Gdx.graphics.isGL20Available() doesn't tell you that your hardware supports GL ES 2.0. It tells you that gl20 graphic context has been initialized.

You must request libGDX to use GL20 explicitly. Example for Lwjgl Backend:

LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.title = "Game";
config.width = 800;
config.height = 480;
config.useGL20 = true; //this is important
new LwjglApplication(new YourGame(), config);