Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Extensions are, in general, a way for graphics card vendors to add new functionality to OpenGL without having to wait until the next revision of the OpenGL spec. There are different types of extensions:</p> <ol> <li>Vendor extension - only one vendor provides a certain type of functionality. <ul> <li>Example: <code>NV_vertex_program</code></li> </ul></li> <li>Multivendor extension - multiple vendors have gotten together and agreed on the functionality. <ul> <li>Example: <code>EXT_vertex_program</code></li> </ul></li> <li>ARB extension - the OpenGL Architecture Review Board has blessed the extension. You have a reasonable expectation that this type of extension will be around for a while. <ul> <li>Example: <code>ARB_vertex_program</code></li> </ul></li> </ol> <p>Extensions don't have to go through all of these steps. Sometimes an extension is only ever implemented by one vendor, before hardware designs go a different way and the extension is abandoned. Other times, an extension might make it as far as ARB status before everyone decides there's a better way. (The <code>ARB_vertex_program</code> approach, for instance, was set aside in favor of the high-level shading language approach of <code>ARB_vertex_shader</code> when it came time to roll shaders into the core OpenGL spec.) Even ARB extensions don't last forever; I wouldn't write something today requiring <code>ARB_matrix_palette</code>, for instance.</p> <p>All of that having been said, it's a very good idea to keep up to date on extensions, in particular the latest ARB and EXT extensions. In the past it has been true that some of the 'fast paths' through the hardware were only accessible via extensions. Likewise, if you want to know what all functionality a piece of hardware can do, there's no better place to look than in a vendor-specific extension.</p> <p>If you're just getting started in OpenGL, I'd recommend investigating:</p> <ul> <li><code>ARB_vertex_buffer_object</code> (vertices)</li> <li><code>ARB_vertex_shader</code> / <code>ARB_fragment_shader</code> / <code>ARB_shader_objects</code> / GLSL spec (shaders)</li> </ul> <p>More advanced:</p> <ul> <li><code>ARB/EXT_framebuffer_object</code> (off-screen rendering)</li> </ul> <p>This is all functionality that's been rolled into core, but it can be good to see it in isolation so you can get a better feel for where its boundaries lie. (The core OpenGL spec seamlessly mixes the old with the new, so this can be pretty important if you want to stay on the fast path, and avoid the legacy and sometimes implemented in software paths.)</p> <p>Whatever you do, make sure you have appropriate checks for the extensions you decide to use, and fallbacks where necessary. Even though your card may have a given extension, there's no guarantee that the extension will be present on another vendor's card, or even on another operating system with the same card.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload