You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

212 lines
6.6 KiB

/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
2020, 2021, 2022, 2023, 2024, 2025, 2026
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
/** @page opengl OpenGL
@brief State of OpenGL support, version and extension requirements.
The following table maps OpenGL function names to Magnum API, useful for
developers with existing OpenGL background. Note that, as reverse mapping, each
function documentation also contains list of OpenGL functions used. You can
also use the search functionality to find out which OpenGL API corresponds to
which Magnum function, class or enum value. Just enter name of an OpenGL
function, define or GLSL name into the search box.
- @subpage opengl-mapping
State of implementation of particular OpenGL versions and extensions is in the
following table.
- @subpage opengl-support
Some OpenGL APIs are marked as deprecated, as they are superseded by newer
functionality. You may still need to use them to support older hardware, but in
general they should be avoided.
- @subpage opengl-deprecated
The OpenGL driver world is far from ideal and in order to work on majority of
platforms, the engine has to work around some driver bugs. An exhaustive list
is here:
- @subpage opengl-workarounds
@section opengl-required-extensions Version and extension requirements
The engine requires at least OpenGL 2.1 or OpenGL ES 2.0, but some specific
functionality has greater requirements. Following are lists of features
requiring specific OpenGL version. In most cases it is also specified which
extension is required, so if given hardware supports required extension, it
doesn't need to have required OpenGL version too (e.g. @gl_extension{ARB,vertex_array_object}
is supported on older Intel GPUs even if they are capable of OpenGL 2.1 only).
- @subpage requires-gl30
- @subpage requires-gl31
- @subpage requires-gl32
- @subpage requires-gl33
- @subpage requires-gl40
- @subpage requires-gl41
- @subpage requires-gl42
- @subpage requires-gl43
- @subpage requires-gl44
- @subpage requires-gl45
- @subpage requires-gl46
- @subpage requires-extension
- @subpage requires-gl
- @subpage requires-gles30
- @subpage requires-gles31
- @subpage requires-gles32
- @subpage requires-es-extension
- @subpage requires-gles
- @subpage requires-webgl20
- @subpage requires-webgl-extension
- @subpage requires-gles-only
- @subpage requires-gles20-only
- @subpage requires-webgl-only
@see @ref building, @ref cmake, @ref MAGNUM_TARGET_GLES,
@ref MAGNUM_TARGET_GLES2
*/
/** @page requires-gl30 Functionality requiring OpenGL 3.0
* @m_footernavigation
*/
/** @page requires-gl31 Functionality requiring OpenGL 3.1
* @m_footernavigation
*/
/** @page requires-gl32 Functionality requiring OpenGL 3.2
* @m_footernavigation
*/
/** @page requires-gl33 Functionality requiring OpenGL 3.3
* @m_footernavigation
*/
/** @page requires-gl40 Functionality requiring OpenGL 4.0
* @m_footernavigation
*/
/** @page requires-gl41 Functionality requiring OpenGL 4.1
* @m_footernavigation
*/
/** @page requires-gl42 Functionality requiring OpenGL 4.2
* @m_footernavigation
*/
/** @page requires-gl43 Functionality requiring OpenGL 4.3
* @m_footernavigation
*/
/** @page requires-gl44 Functionality requiring OpenGL 4.4
* @m_footernavigation
*/
/** @page requires-gl45 Functionality requiring OpenGL 4.5
* @m_footernavigation
*/
/** @page requires-gl46 Functionality requiring OpenGL 4.6
* @m_footernavigation
*/
/** @page requires-extension Functionality requiring specific OpenGL extension
* @m_footernavigation
*/
/** @page requires-gl Functionality requiring desktop OpenGL
@m_footernavigation
The following symbols are not defined when targeting OpenGL ES or WebGL.
@see @ref MAGNUM_TARGET_GLES, @ref requires-gles-only
*/
/** @page requires-gles30 Functionality requiring OpenGL ES 3.0
* @m_footernavigation
*/
/** @page requires-gles31 Functionality requiring OpenGL ES 3.1
@m_footernavigation
The following symbols are not defined when targeting OpenGL ES 2.0.
*/
/** @page requires-gles32 Functionality requiring OpenGL ES 3.2
@m_footernavigation
The following symbols are not defined when targeting OpenGL ES 2.0.
*/
/** @page requires-es-extension Functionality requiring specific OpenGL ES extension
* @m_footernavigation
*/
/** @page requires-gles Functionality requiring OpenGL ES or desktop OpenGL
@m_footernavigation
The following symbols are not defined when targeting WebGL.
@see @ref MAGNUM_TARGET_WEBGL, @ref requires-gl, @ref requires-webgl-only
*/
/** @page requires-webgl20 Functionality requiring WebGL 2.0
* @m_footernavigation
*/
/** @page requires-webgl-extension Functionality requiring specific WebGL extension
* @m_footernavigation
*/
/** @page requires-gles-only OpenGL ES-only and WebGL-only functionality
@m_footernavigation
The following symbols are not defined when targeting desktop OpenGL.
@see @ref MAGNUM_TARGET_GLES2, @ref requires-gles20-only,
@ref requires-webgl-only
*/
/** @page requires-gles20-only OpenGL ES 2.0-only and WebGL 1.0-only functionality
@m_footernavigation
The following symbols are not defined when targeting OpenGL ES 3.0, WebGL 2.0
or desktop OpenGL.
@see @ref MAGNUM_TARGET_GLES2, @ref requires-gles-only,
@ref requires-webgl-only
*/
/** @page requires-webgl-only WebGL-only functionality
@m_footernavigation
The following symbols are not defined when targeting OpenGL ES or desktop
OpenGL.
@see @ref MAGNUM_TARGET_WEBGL, @ref requires-gles-only,
@ref requires-gles20-only
*/