123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- = OpenGL-Registry
- == OpenGL, OpenGL ES, and OpenGL ES-SC API and Extension Registry
- This site contains the API and Extension registries for the OpenGL family
- APIs - OpenGL, OpenGL ES, and OpenGL SC. It includes API specifications;
- specifications of Khronos- and vendor-approved extensions; header files
- corresponding to the specifications; the XML API Registry definining each
- API; and related tools and scripts.
- It does not contain the OpenGL and OpenGL ES Reference Pages, which are in
- the KhronosGroup/OpenGL-Refpages repository.
- If you want to add an extension specification to the Registry, correct an
- existing specification, request allocation of enumerants and other
- controlled resources in the OpenGL / GLX / WGL namespaces, or otherwise
- change the Registry, propose a pull request against the OpenGL-Registry
- repository adding the appropriate extension specifications, making changes
- to the appropriate XML file, etc. Note that any changes you propose to
- reserved values in the registry are not official until your pull request is
- *accepted* into the master branch.
- Feel free to post issues on the repository if it's unclear how to do
- something you need to with extensions, or if you find problems.
- == Please Don't File API And GLSL Bugs Here!
- The OpenGL-Registry repository isn't the right place to report problems with
- the OpenGL and OpenGL ES API and Shading Language Specifications.
- For API (both core and extension) issues, please use the issue tracker in
- the https://github.com/KhronosGroup/OpenGL-API repository.
- For Shading Language (both core and extension) issues, please use the issue
- tracker in the https://github.com/KhronosGroup/OpenGL-GLSL repository.
- Please tag your issues with +[OpenGL]+ or +[OpenGL ES]+ in the title, if
- they are specific to that API and/or Shading Language.
- Reporting problems with the registry *itself*, including missing or badly
- formed extension documents, headers, or XML files, should be done using the
- OpenGL-Registry issue tracker.
- === Defining New Extensions
- To create a new extension specification, take these steps:
- * Request one or more blocks of unused enumerants for GL, GLX, or WGL
- depending on the needs of your extension, by adding the reservation(s) to
- the end of gl.xml, glx.xml, and/or wgl.xml.
- * Once the pull request modifying the XML files is accepted into master, you
- have control of those enumerant blocks.
- * Create an extension specification, following the model of existing vendor
- specifications under extensions/*vendor*/ .
- * Obtain whatever degree of review, implementation, and signoff you need
- from affected parties before declaring the extension complete.
- * Add the extension specification under extensions/*vendor*/*extension* .
- * Modify extensions/registry.py to include the extension, using the next
- free ARB, GL, and/or ES extension numbers (depending on which API the
- extension is defined for). Execute the python script nextfree.py in the
- extensions/ directory to find the next free numbers.
- * Once registry.py is updated, 'make' in extensions/ to update the PHP
- include files which are used to show an index of extensions on the
- registry website. This requires GNU make and Python 3.
- * Add the extension number(s) to the extension specification in the 'Number'
- block.
- * Add the extension interfaces and enumerant assignments to xml/gl.xml,
- glx.xml, and/or wgl.xml following existing examples. Verify that the
- relevant extension headers are generated with the correct interfaces by
- running 'make' in xml/. This requires the lxml Python module.
- * Once the pull request adding the extension specification and modifying
- registry.py is accepted, your extension is registered.
- There are some documents under the docs/ directory describing some of the
- processes for making extensions, but they are largely out of date. They may
- be updated or removed over time:
- * link:docs/rules.html[How to create extensions]
- * link:docs/enums.html[Enumerant allocation policies]
- * link:docs/template.txt[Extension specification template]
- * link:docs/promoting.html[Extension promotion guidelines]
- * link:docs/reserved.txt[GLX opcode registry (rarely updated)]
- * link:docs/syntaxrules.txt[OpenGL Syntax Rules (updated 2006/12/13)]
- * link:docs/GLSLExtensionRules.txt[OpenGL Shading Language Extension Conventions (updated 2006/12/18)]
- * link:docs/fog_coord.txt[Extension Specification Example]
- === Repository Contents
- * ABI - OpenGL ABI for Linux
- * api - Header files for all APIs
- ** api/ES - Headers for OpenGL ES
- ** api/GL - Headers for OpenGL
- ** api/SC - Headers for OpenGL SC
- ** Note that the OpenGL ES and OpenGL SC headers all depend on the shared
- https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h[khrplatform.h]
- This file is maintained in the http://www.khronos.org/registry/EGL/[EGL
- Registry].
- * docs - Miscellaneous documentation on creating extensions, mostly out of date.
- * extensions - Extension specifications for all APIs
- ** extensions/registry.py - combined extension registry for all APIs
- ** extensions/makeindex.py - create HTML extension indices from registry.py
- * index_{es,gl,sc}.php - Index files for the website, linking to specifications, headers, and extensions relevant to each API
- * specs - API and Shading Language Specifications for all APIs
- ** specs/es - OpenGL ES Specifications
- ** specs/gl - OpenGL Specifications
- ** specs/sc - OpenGL SC Specifications
- * xml - XML API Registry and related tools
- === There Sure Is A Lot Of Stuff In Here!
- Yes, there sure is. The specs/ directory contains over 125 MB of PDFs,
- including the latest specs for each version of OpenGL and OpenGL ES. While
- this may be somewhat distressing to people who just want to add a single
- extension, due to the repository download time, the *primary* purpose of
- this repository is to be the backing store for the web registry on
- khronos.org. Fortunately git is very efficient, so once you've done the
- initial repository clone, updates will be small and quick.
|