Adding OpenGL extensions on Linux (Ubuntu)


I’m starting to learn OpenGL programming and my first program crashes at GLUT’s InitWindow function with:

freeglut (./GL1): glXCreateContextAttribsARB not found

I found out that it happens because I don’t have GLX_ARB_create_context on my Ubuntu 10.10.

How can I install this extension on my Ubuntu box?

My glxinfo extensions section:

OpenGL extensions:
GL_ARB_copy_buffer, GL_ARB_depth_clamp, GL_ARB_depth_texture,
GL_ARB_draw_buffers, GL_ARB_draw_elements_base_vertex,
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_half_float_pixel, GL_ARB_half_float_vertex,
GL_ARB_map_buffer_range, 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_provoking_vertex,
GL_ARB_seamless_cube_map, GL_ARB_shader_objects,
GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_sync,
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_texture_rg, GL_ARB_texture_swizzle, GL_ARB_transpose_matrix,
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_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_compiled_vertex_array, GL_EXT_copy_texture, 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_gpu_program_parameters, GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels,
GL_EXT_pixel_buffer_object, GL_EXT_point_parameters,
GL_EXT_polygon_offset, 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_subtexture,
GL_EXT_texture3D, 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_lod_bias, GL_EXT_texture_object, GL_EXT_texture,
GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_texture_swizzle,
GL_EXT_timer_query, GL_EXT_vertex_array_bgra, GL_EXT_vertex_array,
GL_OES_EGL_image, GL_OES_read_format, GL_3DFX_texture_compression_FXT1,
GL_APPLE_client_storage, GL_APPLE_object_purgeable,
GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
GL_ATI_blend_equation_separate, GL_ATI_envmap_bumpmap,
GL_ATI_separate_stencil, GL_ATI_texture_env_combine3,
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_texture_signed_rgba, GL_MESA_window_pos,
GL_MESA_ycbcr_texture, GL_NV_blend_square, GL_NV_depth_clamp,
GL_NV_light_max_exponent, GL_NV_packed_depth_stencil,
GL_NV_texgen_reflection, GL_NV_texture_env_combine4,
GL_NV_texture_rectangle, GL_NV_vertex_program1_1, GL_NV_vertex_program,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays

You don’t “install” extensions. Your OpenGL implementation either supports them or it doesn’t. The only thing you can do is download more up-to-date drivers. Perhaps these will give you the extension in question. But otherwise, it seems like your GL implementation doesn’t support 3.0 or greater.

Also, you’re talking about a GLX extension. To get the list of GLX extensions, you must use “​glXQueryExtensionsString​”. However, since FreeGLUT knows about this, it won’t help you.

You didn’t say what hardware you have though.


What extensions are available depends on your hardware (as in whether or not it’s able to support them) and your driver (as in whether or not it makes them available to programs). OpenGL is not a software solution.

OK. So it seems I can not even do OpenGL 4.0 because of my poor video card (kind of Intel integrated card) and this is the case. I thought it was just a matter of this one extension which itself didn’t seem to be much related to hardware.

Thanks for pointing it out.

Intel OpenGL support is very poor indeed. If you get a recent nVidia or AMD graphics card using drivers downloaded from the vendors themselves you would get OpenGL 3 or 4 support (depending on how recent the hardware is).

Hi! Your problem is prosaic:
MESA means that you use MESA OpenGL implementation (though they can not use OpenGL name). Those drivers are fairly good for daily use BUT they provide only OpenGL 2.1!

To have modern OpenGL you need to have proprietary drivers installed.

Just go System -> Administration -> Additional Drivers.
This app will be able to check what gpu you have, and then will install proprietary drivers.

On my Ubuntu 11.04 and AMD 5730M, with newest AMD drivers I have OpenGL 4.1 Compatibility Profile. And using freglut is no problem.

So install drivers via Ubuntu tool, or head to AMD drivers page and download drivers manually (then generate ubuntu package, and install from package)

PS Actual OpenGL you will get depends on your GPU if it can not support OpenGL 3.0 you will still be left with OpenGL 2.1.
Look at wikipedia for info which GPU support which OpenGL version.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.