手游模拟器哪个好中 OpwnGL+OpenGL DirectX DirectX+ 四种模式分别有啥用?

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于OpenGL+ES移动平台图形渲染引擎的的研究与实现.pdf 88页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
学位论文版权使用授权书
本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特
授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索,
提供阅览服务,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。
同意学校向国家有关部门或机构送交论文的复印件和磁盘。
(保密的学位论文在解密后适用本授权说明)
导师签名:
字同期:钞/。年‘月,珀
中图分类号:TP311.52
学校代码:10004
密级:公开
北京交通大学
专业硕士学位论文
基于OpenGLES的移动平台图形渲染引擎研究与实现
TheResearchand
ofMobilePlatform
Implementation
Basedonthe
GraphicsRenderingEngine
作者姓名:官酩杰
导师姓名:阮秋琦
工程领域:软件工程
学位级别:硕士
北京交通大学
本论文的工作是在我的导师阮秋琦教授的悉心指导下完成的,在学习和科研
生活中,阮老师一丝不苟的工作作风,严谨的治学态度和科学的工作方法给我留
下了深刻的印象,对我今后的学习和工作有着极大的影响和帮助。在此由衷的感
谢阮秋琦老师两年来对我的支持和悉心指导。
阮秋琦教授悉心指导我完成了相关科研工作,在学习和生活上都给予了我非
常大的关心和帮助,在此向阮秋琦老师表示衷心的谢意。阮秋琦教授对于我的科
研工作和论文都提出了许多宝贵的意见和建议,对我在学习科研过程中的成长和
提高起到了非常大的作用和帮助,使我受益颇多,在此表示衷心的感谢。
与此同时,中国移动研究院和播思通讯公司的同事对我的学习和工作给予了
很大的帮助和支持,对他们表示由衷的感谢。
另外也很感谢我的家人,他们的理解和支持使我能够在学校专心完成我的学
业。最后对所有关心和帮助我的人表示衷心的感谢。
正在加载中,请稍后...没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
用OpenGL技术在虚拟环境中构建三维模型实践.pdf 66页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
电子科技大学
硕士学位论文
用OpenGL技术在虚拟环境中构建三维模型的实践
姓名:陈超
申请学位级别:硕士
专业:软件工程
指导教师:袁宏春;杨文伟
随着计算机软、硬件突飞猛进的发展,计算机图形学在各个行业的应用也得
到迅速普及和深入,目前,计算机图形学己进入三维时代。科学计算可视化、计
算机动画和虚拟现实已经成为近年来计算机图形学的三大热门话题,而这三大热
门话题的技术核心均为三维图形。
工具中最为突出的是SGI公司的OpenGL(OpenGraphicsLanguage,开放式的图
形语言),它已经成为一个工业标准的计算机三维图形软件开发接口,并广泛应
用于游戏开发、建筑、产品设计、医学、地球科学等领域。
运用OpenGL技术生成的虚拟现实建模有广泛的应用前景,它尤其适用于那些
难于用CAD方法建立真实感模型的自然环境,以及需要真实重现环境原有风貌的
应用,可应用于建筑展示、飞行模拟、交互式游戏、医疗模拟、虚拟购物、虚拟
博物馆和艺术陈列馆等虚拟现实的应用领域以及视频图像压缩和视频图像的浏览
本文以三维图像为研究对象,用0penGL技术解决以下几个问题:
1.对图形学中的三维建模技术进行研究和实践,运用0penGL技术在虚拟环境
中构建三维模型。
2.对图形学中的光照处理技术进行研究和实践,通过调用OpenGL中的光照函
数来获得物体的颜色、并实现与自然界相类似的照明效果。
3.在虚拟环境中用模拟的自然光源照射物体,所得出最终效果的差异。
4.在不同光照模型下,不同模型在虚拟环境中所呈现的实际效果和真实效果
之间的差异。
关键字:OpenGL,虚拟环境、三维模型、光照
andhardwarein
ofsoftware
development
usedinallofindustries
field,theapplicationcomputergraphics
hasresearched
popularize&Nowadays,computergraphics
inthreedimensions.Thevisualizationofscience
threefocusesabout
virtualreal hasbecome
cartoon,and
graphics.
isthreedimension
kernelthethreeabove
technology
graphics.
正在加载中,请稍后...From Wikipedia, the free encyclopedia
Open Graphics Library (OpenGL) is a ,
(API) for rendering
. The API is typically used to interact with a
(GPU), to achieve
Inc., (SGI) started developing OpenGL in 1991 and released it on June 30, 1992; applications use it extensively in the fields of
(CAD), , , information visualization, , and . Since 2006 OpenGL has been managed by the
technology
An illustration of the graphics pipeline process
The OpenGL specification describes an abstract
for drawing 2D and 3D graphics. Although it is possible for the API to be implemented entirely in software, it is designed to be implemented mostly or entirely .
The API is defined as a set of
which may be called by the client program, alongside a set of
(for example, the constant GL_TEXTURE_2D, which corresponds to the
number 3553). Although the function definitions are superficially similar to those of the programming language , they are language-independent. As such, OpenGL has many , some of the most noteworthy being the
(API, based on , for 3D rendering from within a ); the C bindings , the C
and C bindings provided by .
In addition to being language-independent, OpenGL is also cross-platform. The specification says nothing on the subject of obtaining, and managing an OpenGL context, leaving this as a detail of the underlying . For the same reason, OpenGL is purely concerned with rendering, providing no APIs related to input, audio, or windowing.
OpenGL is an evolving API. New versions of the OpenGL specifications are regularly released by the , each of which extends the API to support various new features. The details of each version are decided by consensus between the Group's members, including graphics card manufacturers, operating system designers, and general technology companies such as
In addition to the features required by the core API,
(GPU) vendors may provide additional functionality in the form of extensions. Extensions may introduce new functions and new constants, and may relax or remove restrictions on existing OpenGL functions. Vendors can use extensions to expose custom APIs without needing support from other vendors or the Khronos Group as a whole, which greatly increases the flexibility of OpenGL. All extensions are collected in, and defined by, the OpenGL Registry.
Each extension is associated with a short identifier, based on the name of the company which developed it. For example, 's identifier is NV, which is part of the extension name GL_NV_half_float, the constant GL_HALF_FLOAT_NV, and the function glVertex2hNV(). If multiple vendors agree to implement the same functionality using the same API, a shared extension may be released, using the identifier EXT. In such cases, it could also happen that the Khronos Group's Architecture Review Board gives the extension their explicit approval, in which case the identifier ARB is used.
The features introduced by each new version of OpenGL are typically formed from the combined features of several widely implemented extensions, especially extensions of type ARB or EXT.
OpenGL's popularity is partially due to the quality of its official documentation.[] The OpenGL Architecture Review Board released a series of manuals along with the specification which have been updated to track changes in the API. These are commonly referred to by the colors of their covers:
The Red Book
OpenGL Programming Guide, 8th Edition.  
A tutorial and reference book.
The Orange Book
OpenGL Shading Language, 3rd edition.  
A tutorial and reference book for .
Historic books (pre-OpenGL 2.0):
The Green Book
OpenGL Programming for the X Window System.  
A book about X11 interfacing and
The Blue Book
OpenGL Reference manual, 4th edition.  
Essentially a hard-copy printout of the
(man) pages for OpenGL.
Includes a poster-sized fold-out diagram showing the structure of an idealised OpenGL implementation.
The Alpha Book (white cover)
OpenGL Programming for Windows 95 and Windows NT.  
A book about interfacing OpenGL with Microsoft Windows.
The earliest versions of OpenGL were released with a companion library called the
(GLU). It provided simple, useful features which were unlikely to be supported in contemporary hardware, such as , and generating
and . The GLU specification was last updated in 1998 and depends on OpenGL features which are now .
Given that creating an OpenGL context is quite a complex process, and given that it varies between , automatic OpenGL context creation has become a common feature of several game-development and user-interface , including , , , , and . A few libraries have been designed solely to produce an OpenGL-capable window. The first such library was
(GLUT), later superseded by .
is a newer alternative.
These toolkits are designed to create and manage OpenGL windows, and manage input, but little beyond that.
– A cross-platform windowing and keyboard-mouse- is more game-oriented
– A cross-platform windowing and keyboard- its API is a superset of the GLUT API, and it is more stable and up to date than GLUT
(GLUT) – An old windowing handler, no longer maintained.
Several "multimedia libraries" can create OpenGL windows, in addition to input, sound and other tasks useful for game-like applications
– A cross-platform multimedia library with a C API focused on game development
(SDL) – A cross-platform multimedia library with a C API
– A cross-platform multimedia library with a C++ API and multiple other bindings to languages such as C#, Java, Haskell, and Go
Widget toolkits
– A small cross-platform C++ widget library
– A cross-platform C++ widget toolkit. It provides many OpenGL helper objects, which even abstract away the difference between desktop GL and OpenGL ES
– A cross-platform C++ widget toolkit
Given the high workload involved in identifying and loading OpenGL extensions, a few libraries have been designed which load all available extensions and functions automatically. Examples include ,
and . Extensions are also loaded automatically by most language bindings, such as
implementation of OpenGL. It can do pure software rendering, and it may also use hardware acceleration on , , and other platforms by taking advantage of the . As of version 13.0, it implements version 4.5 of the OpenGL standard.
In the 1980s, developing software that could function with a wide range of graphics hardware was a real challenge. Software developers wrote custom interfaces and drivers for each piece of hardware. This was expensive and resulted in multiplication of effort.
By the early 1990s,
(SGI) was a leader in 3D graphics for workstations. Their
API was considered state-of-the-art[] and became the de facto industry standard, overshadowing the open standards-based . This was because IRIS GL was considered easier to use, and because it supported
rendering. By contrast, PHIGS was considered difficult to use and outdated in functionality.
SGI's competitors (including ,
and ) were also able to bring to market 3D hardware supported by extensions made to the PHIGS standard, which pressured SGI to open source a version of IrisGL as a public standard called OpenGL.
However, SGI had many customers for whom the change from IrisGL to OpenGL would demand significant investment. Moreover, IrisGL had API functions that were irrelevant to 3D graphics. For example, it included a windowing, keyboard and mouse API, in part because it was developed before the
and Sun's . And, IrisGL libraries were unsuitable for opening due to licensing and patent issues[]. These factors required SGI to continue to support the advanced and proprietary
programming APIs while market support for OpenGL matured.
One of the restrictions of IrisGL was that it only provided access to features supported by the underlying hardware. If the graphics hardware did not support a feature natively, then the application could not use it. OpenGL overcame this problem by providing software implementations of features unsupported by hardware, allowing applications to use advanced graphics on relatively low-powered systems. OpenGL standardized access to hardware, pushed the development responsibility of hardware interface programs () to hardware manufacturers, and delegated windowing functions to the underlying operating system. With so many different kinds of graphics hardware, getting them all to speak the same language in this way had a remarkable impact by giving software developers a higher level platform for 3D-software development.
In 1992, SGI led the creation of the
(OpenGL ARB), the group of companies that would maintain and expand the OpenGL specification in the future.
In 1994, SGI played with the idea of releasing something called "" which included elements such as a scene-graph API (presumably based on their
technology). The specification was circulated among a few interested parties – but never turned into a product.
in 1995, which eventually became the main competitor of OpenGL. On December 17, 1997, Microsoft and SGI initiated the
project, which was a joint effort with the goal of unifying the OpenGL and Direct3D interfaces (and adding a scene-graph API too). In 1998, Hewlett-Packard joined the project. It initially showed some promise of bringing order to the world of interactive 3D computer graphics APIs, but on account of financial constraints at SGI, strategic reasons at Microsoft, and a general lack of industry support, it was abandoned in 1999.
In July 2006, the OpenGL Architecture Review Board voted to transfer control of the OpenGL API standard to the Khronos Group.
In June 2018, Apple deprecated OpenGL APIs on all of their platforms.
The first version of OpenGL, version 1.0, was released on June 30, 1992 by Mark Segal and . Since then, OpenGL has occasionally been extended by releasing a new version of the specification. Such releases define a baseline set of features which all conforming graphics cards must support, and against which new extensions can more easily be written. Each new version of OpenGL tends to incorporate several extensions which have widespread support among graphics-card vendors, although the details of those extensions may be changed.
OpenGL 1.1 - Texture objects
OpenGL 1.2 - 3D textures, BGRA and
OpenGL 1.3 - , multisampling, texture compression
OpenGL 1.4 - Depth textures
OpenGL 1.5 - Vertex Buffer Object (VBO), Occlusion Queries
OpenGL 2.0 -
1.1, , Non Power of Two textures, Point Sprites, Two-sided stencil
OpenGL 2.1 - GLSL 1.2, Pixel Buffer Object (PBO), sRGB Textures
OpenGL 3.0 - GLSL 1.3, Texture Arrays, Conditional rendering, Frame Buffer Object (FBO)
OpenGL 3.1 - GLSL 1.4, Instancing, Texture Buffer Object, Uniform Buffer Object, Primitive restart
OpenGL 3.2 - GLSL 1.5, Geometry Shader, Multi-sampled textures
OpenGL 3.3 - GLSL 3.30 Backports as much function as possible from the OpenGL 4.0 specification
OpenGL 4.0 - GLSL 4.00 Tessellation on GPU, shaders with 64-bit precision,
OpenGL 4.1 - GLSL 4.10 Developer-friendly debug outputs, compatibility with OpenGL ES 2.0,
OpenGL 4.2 - GLSL 4.20 Shaders with atomic counters, draw transform feedback instanced, shader packing, performance improvements
OpenGL 4.3 - GLSL 4.30 Compute shaders leveraging GPU parallelism, shader storage buffer objects, high-quality ETC2/EAC texture compression, increased memory security, a multi-application robustness extension, compatibility with OpenGL ES 3.0,
OpenGL 4.4 - GLSL 4.40 Buffer Placement Control, Efficient Asynchronous Queries, Shader Variable Layout, Efficient Multiple Object Binding, Streamlined Porting of Direct3D applications, Bindless Texture Extension, Sparse Texture Extension,
OpenGL 4.5 - GLSL 4.50 Direct State Access (DSA), Flush Control, Robustness, OpenGL ES 3.1 API and shader compatibility, DX11 emulation features
OpenGL 4.6 - GLSL 4.60 More efficient geometry processing and shader execution, more information, no error context, polygon offset clamp, SPIR-V, anisotropic filtering
Release date: March 4, 1997
Extension Name
Sort #Number
Extension #3
Depth values may be offset on a per-primitive basis
Extension #4
Various texturing improvements, including proxy textures and sized internal formats
Extension #9
Extension #10
Various methods to alter texture images, including image copying and sub-image replacement
Extension #20
Texture state may be stored in a GL object, for greater efficiency
Extension #30
Multiple vertices may be passed to the GL with one function call
Extension #39
Fragment colors may be blended into the framebuffer using
Release date: March 16, 1998
One notable feature of OpenGL 1.2 was the introduction of the imaging subset. This is a set of features which are very useful to image-processing applications, but which have limited usefulness elsewhere. Implementation of this subset has
support is indicated by advertising the extension string ARB_imaging.
Extension Name
Sort #Number
Extension #6
Three-dimensional texturing
Extension #23
Pixel data may be packed into a l for example, all four components of an RGBA pixel may be specified as one
Extension #24
Gives greater control over the level-of-detail calculation used to select a texture's mipmap
Extension #27
Normals may be automatically rescaled by the GL, which in some cases removes the need for a costly normalization
Extension #35
A new texture-coordinate clamping mode which, unlike GL_CLAMP, will never sample from the texture's border
Extension #112
The DrawRangeE a slightly faster alternative to DrawElements
Extension #129
Pixel data may be specified in BGR or BGRA order, to match the pixel format of Windows bitmaps
Extension #144
The GL's lighting abilities are extended to support texture-independent specular highlighting
Release date: October 14, 1998
OpenGL 1.2.1 was a minor release, appearing only seven months after the release of version 1.2. It introduced the concept of ARB extensions, and defined the extension (in OpenGL 1.3 table), without yet incorporating it into the OpenGL core specification.
Release date: August 14, 2001
Extension Name
Sort #Number
in OpenGL 1.2.1 integrated
Color values from several textures at once may be blended onto one fragment
ARB Extension #3
Transformation matrices may be specified in either order: row-major or column-major
ARB Extension #5
A standard framework upon which
may be supported, without needing other MSAA support
ARB Extension #7
texturing.
ARB Extension #6
ARB Extension #17
ARB Extension #19
Several new "texture environment functions": mechanisms for blending texture colors onto fragment colors
ARB Extension #12
A standard framework on which compressed texture formats may be supported, without needing other compression support
ARB Extension #13
A new texture-coordinate clamping mode which forces out-of-bounds texture coordinates to sample from a texture's border
Release date: July 24, 2002
Extension Name
Sort #Number
Extension 32
Texture mipmaps may be generated automatically by the GL
Extension #2
Extension #38
Various ways to customize the blend equation, promoted from the optional imaging subset (introduced in version 1.2) to the core specification
OpenGL Extension #37
also OpenGL ES Extension #65, Blending capability is extended by respecifying the entire blend equation.
Extension #145
The "secondary color" mechanism defined by EXT_separate_specular_color may be used in all circumstances, even with lighting disabled
Extension #148
A set of APIs which emulate multiple calls to DrawArrays or DrawElements,
in some cases, this may be more efficient
Extension #149
A way to customize the
intensity per vertex
Extension #173
Separate blending functions may be specified for the RGB and Alpha components of the blended pixels
Extension #176
A stencil mode which causes stencil values to increment with
OpenGL Extension #186
also OpenGL ES Extension #60, A means to bias computing mipmap weights to add blur or sharpening effects to texture filtering
Extension 194
RGB and Alpha values may be squared during alpha-blending
ARB Extension #14
Greater control over rasterizing point primitives
ARB Extension #18
Texture environment functions may access all other texture stages, rather than being restricted to the texture bound to their own texture unit
ARB Extension #21
A new texture-coording wrapping mode which causes the texture image to be horizontally or vertically mirrored
ARB Extension #22
ARB Extension #23
Textures which store depth values, rath such textures are useful for shadow-casting and displacement maps
ARB Extension #25
The WindowPos API, an alternative to RasterPos which sets the raster-output position in screen space rather than world space
Release date: July 29, 2003
Alongside the release of OpenGL 1.5, the ARB released the OpenGL Shading Language specification, and the extensions , , and . However, these would not be incorporated into the core specification until the next release.
Extension Name
Sort #Number
ARB Extension #28
A new type of GL object, the "buffer", which stores various types of data (especially vertex data) in fast video memory
ARB Extension #29
The programmer may query whether or not a primitive was
during rendering
Extension #267
The abilities of the ARB_shadow extension are slightly extended
Release date: September 7, 2004
OpenGL 2.0 was originally conceived by
to address concerns that OpenGL was stagnating and lacked a strong direction. 3Dlabs proposed a number of major additions to the standard. Most of these were, at the time, rejected by the ARB or otherwise never came to fruition in the form that 3Dlabs proposed. However, their proposal for a C-style shading language was eventually completed, resulting in the current formulation of the OpenGL Shading Language ( or GLslang). Like the assembly-like shading languages it was replacing, it allowed replacing the fixed-function vertex and fragment pipe with , though this time written in a C-like high-level language.
The design of GLSL was notable for making relatively few concessions to the limits of the hardware then available. This hearkened back to the earlier tradition of OpenGL setting an ambitious, forward-looking target for 3D accelerators rather than merely tracking the state of currently available hardware. The final OpenGL 2.0 specification includes support for GLSL.
Extension Name
Sort #Number
ARB Extension #30
ARB Extension #31
ARB Extension #32
ARB Extension #33
All ARBs here heavily modified. The high-level , which provides direct access to
vertex and fragment processors
ARB Extension #34
Texture images may have non-power-of-two dimensions
ARB Extension #35
Points may be rendered as small, screen-or useful when developing
ARB Extension #37
Fragment shaders may output different colors to multiple render- support for multiple render-targets would not be guaranteed until OpenGL 3.0
Extension #268
Extension #289
Separate stencil algorithms may be used when rendering the front and back faces of primitives
Extension #299
Separate blending equations may be specified for the RGB and Alpha components of the blended pixels, similar to EXT_blend_func_separate
Release date: July 2, 2006
OpenGL 2.1 required implementations to support version 1.20 of the .
Extension Name
Sort #Number
ARB Extension #42
Buffer objects may be used for asynchronous transfers of image data.
Extension #315
Texture pixel values may be specified in the gamma-corrected
color space
Before the release of OpenGL 3.0, the new revision had the codename . At the time of its original announcement, Longs Peak was presented as the first major API revision in OpenGL's lifetime. It consisted of an overhaul to the way that OpenGL works, calling for fundamental changes to the API.
The draft introduced a change to object management. The GL 2.1 object model was built upon the state-based design of OpenGL. That is, to modify an object or to use it, one needs to bind the object to the state system, then make modifications to the state or perform function calls that use the bound object.
Because of OpenGL's use of a state system, objects must be mutable. That is, the basic structure of an object can change at any time, even if the rendering pipeline is asynchronously using that object. A texture object can be redefined from 2D to 3D. This requires any OpenGL implementations to add a degree of complexity to internal object management.
Under the Longs Peak API, object creation would become , using templates to define the properties of an object which would be created with one function call. The object could then be used immediately across multiple threads. Objects wou however, they could have their contents changed and updated. For example, a texture could change its image, but its size and format could not be changed.
To support backwards compatibility, the old state based API would still be available, but no new functionality would be exposed via the old API in later versions of OpenGL. This would have allowed legacy code bases, such as the majority of
products, to continue to run while other software could be written against or ported to the new API.
Longs Peak was initially due to be finalized in September 2007 under the name OpenGL 3.0, but the Khronos Group announced on October 30 that it had run into several issues that it wished to address before releasing the specification. As a result, the spec was delayed, and the Khronos Group went into a
until the release of the final OpenGL 3.0 spec.
The final specification proved far less revolutionary than the Longs Peak proposal. Instead of removing all immediate mode and fixed functionality (non-shader mode), the spec included them as deprecated features. The proposed object model was not included, and no plans have been announced to include it in any future revisions. As a result, the API remained largely the same with a few existing extensions being promoted to core functionality.
Among some developer groups this decision caused something of an uproar, with many developers professing that they would switch to
in protest. Most complaints revolved around the lack of communication by Khronos to the development community and multiple features being discarded that were viewed favorably by many. Other frustrations included the requirement of DirectX 10 level hardware to use OpenGL 3.0 and the absence of geometry shaders and instanced rendering as core features.
Other sources reported that the community reaction was not quite as severe as originally presented, with many vendors showing support for the update.
Release date: August 11, 2008
OpenGL 3.0 introduced a deprecation mechanism to simplify future revisions of the API. Certain features, marked as deprecated, could be completely disabled by requesting a forward-compatible context from the windowing system. OpenGL 3.0 features could still be accessed alongside these deprecated features, however, by requesting a full context.
Deprecated features include:
All fixed-function vertex and fragment processing
Direct-mode rendering, using glBegin and glEnd
Display lists
Indexed-color rendering targets
versions 1.10 and 1.20
Extension #326, API functions required by version 1.30 of the
ARB Extension #39
ARB Extension #40, interacts with ARB_color_buffer_float. Based on the NV_half_float extension (OpenGL Extension #283). Half-float () vertex array and pixel data formats
ARB Extension #41, ARB_color_buffer_float, EXT_packed_depth_stencil, ARB_framebuffer_object is required. This extension modifies EXT_depth_bounds_test and NV_copy_depth_to_color.
ARB Extension #43
ARB Extension #45, see also EXT_framebuffer_object
ARB Extension #48, Based on the NV_half_float and OES_vertex_half_float extensions.
ARB Extension #50, Mapping of buffer subranges into client space and flushing modified data
ARB Extension #53
ARB Extension #54, A new type of GL object, the "vertex array object", which stores a set of bindi this allows such arrays to be rebound with one function call rather than several calls to EnableVertexAttribArray, VertexAttribPointer, etc.
ARB Extension #56 (GLX_ARB_create_context), ARB Extension #75 (GLX_ARB_create_context_profile)
ARB Extension #45, see also EXT_framebuffer_object
Extension #283, This extension introduces a new storage format and data type for half-precision (16-bit) floating-point quantities.
Extension #310, A new type of GL object, the "framebuffer"; these enable rendering offscreen and to textures
Extension #312, EXT_framebuffer_object are required. Packed depth/stencil internal formats for combined depth+stencil textures and renderbuffers
Extension #316,#317, Functions to perform a fast
between render-targets
Extension #328, This extension adds a new 3-component floating-point texture format that fits within a single 32-bit word.
Extension #329, interacts with EXT_framebuffer_object, NV_geometry_program4, NV_gpu_program4, EXT_texture_compression_s3tc and NV_texture_compression_vtc. One- and two-dimensional layered texture targets
OpenGL Extension #332, OpenGL ES Extension #286, The RGTC texture-compression format, for compressing one or two-channels of image data
Extension #333
Extension #334, ARB_color_buffer_float is required. This extension provides new texture internal formats whose depth components are stored as 32-bit floating-point values.
Extension #337, Use of the
gamma-corrected image data in framebuffers
Extension #340, Per-color-attachment blend enables and color writemasks
Extension #343, NV_gpu_program4 or EXT_gpu_shader4 is required. Support for floating-point and non-normalized integer texture storage
OpenGL Extension #346, OpenGL ES Extension #198, Conditional rendering, based on the results of an occlusion query
Extension #352, ARB_shader_objects extension is required. The results of vertex processing can be captured into buffers, rather than (or in addition to) being passed to the rest of the pipeline
Release date: March 24, 2009
OpenGL 3.1 fully removed all of the features which were deprecated in version 3.0, with the exception of wide lines. From this version onwards, it's not possible to access new features using a full context, or to access deprecated features using a forward-compatible context. An exception to the former rule is made if the implementation supports the
extension, but this is not guaranteed.
ARB Extension #38, Rectangular textures
ARB Extension #44, EXT_gpu_shader4 or NV_vertex_program4 is required. Instanced rendering: the ability to quickly render the same geometry data multiple times, with the vertex shader being given information specifying the instance it is operating on
ARB Extension #51, NV_gpu_program4 or EXT_gpu_shader4 is required. Buffer textures: one-dimensional textures, where the pixel data store comes from a buffer object
ARB Extension #57, ARB_vertex_buffer_object is required. This extension interacts with ARB_geometry_shader4, ARB_texture_rectangle, EXT_gpu_shader4, EXT_texture_array, EXT_texture_integer, and EXT_texture_buffer_object. The ability to store a set of shader parameters in a buffer object
ARB Extension #59, A mechanism to copy data directly between buffer objects
Extension Number 285, The ability to specify that an index restarts a primitive, so that objects can be called with fewer calls to DrawElements
Extension Number 365
Release date: August 3, 2009
OpenGL 3.2 further built on the deprecation mechanisms introduced by OpenGL 3.0, by dividing the specification into a core profile and compatibility profile. Compatibility contexts include the previously-removed fixed-function APIs, equivalent to the ARB_compatibility extension released alongside OpenGL 3.1, while core contexts do not. OpenGL 3.2 also included an upgrade to GLSL version 1.50.
(heavily modified)
ARB Extension #47 (NVIDIA Revision: 26), interacts with EXT_framebuffer_object, EXT_framebuffer_blit, EXT_texture_array, ARB_tranform_feedback, ARB_uniform_buffer_object.
ARB Extension #61, The developer may configure whether or not triangles are clipped against the
ARB Extension #62, interacts with ARB_draw_instanced, EXT_draw_instanced, ARB_instanced_arrays, ARB_compatibility. The DrawElements API is extended to automatically add a numerical offset (the base vertex) to each array index
ARB Extension #63, interacts with ARB_fragment_program, ARB_fragment_shader, NV_fragment_program, NV_fragment_program_option, NV_fragment_program2, NV_fragment_program4. Allow fragment shaders to read fragment coordinate locations in the same conventions as
ARB Extension #64, ARB_geometry_shader4, EXT_geometry_shader4, NV_geometry_shader4 and NV_gpu_program4 interact with this extension. The developer may configure which vertex determines the properties for flat-shaded vertex components
ARB Extension #65, ARB_texture_cube_map is required. Forces blending between different faces when sampling from a cube map
ARB Extension #66, A set of GL objects representing
primitives, which allow the client to detect when a specific set of tasks has completed
ARB Extension #67, A new type of texture, which can be used as a
render target
ARB Extension #68, interacts with EXT_vertex_array, EXT_secondary_color, NV_vertex_program, ARB_vertex_program, ARB_vertex_shader. Per-vertex color data may be specified in BGRA order, matching the convention used by
Release date: March 11, 2010
OpenGL 3.3 was released alongside version 4.0. It was designed to target hardware able to support Direct3D 10.
ARB Extension #49, EXT_direct_state_access interaction added with revision 7. When performing instanced rendering, instances may be configured using per-instance vertex attributes rather than using a vertex shader parameter to access an array
ARB Extension #78, required ARB_fragment_shader, EXT_gpu_shader4, interacts with EXT_blend_func_separate. Fragment shaders can output multiple colors that can be used in one
ARB Extension #79, Requires GL_ARB_vertex_shader, interacts with GL_ARB_blend_func_extended, GL_ARB_separate_shader_objects, GL_ARB_gpu_shader_fp64, Shader inputs and outputs may be assigned resource locations in the shader
ARB Extension #80, ARB_occlusion_query interacts with this extension, The occlusion-query system is extended to support querying whether entire objects were occluded, rather than querying the exact numbe in some cases, this may be more efficient
ARB Extension #81, interacts with EXT_texture_filter_anisotropic, A new GL object which wraps some texture object state, such as interp allows one texture to be simultaneously accessed in multiple ways
ARB Extension #82, This extension is based on ARB_gpu_shader5. Adds shading language functions to perform conversions from/to floating- this extension only affects the shading language
ARB Extension #83, Requires EXT_texture_integer. Image and vertex data may be specified by packing three 10-bit normalized integer values into one 32-bit integer
ARB Extension #84, Allows configuring the order in which components in a texture are presented to a shader when it samples them
ARB Extension #85, Functions to accurately measure the time t information useful for
ARB Extension #86, trivially interacts with the OES_vertex_type_10_10_10_2 and interacts with the EXT_vertex_array_bgra extension.
Release date: March 11, 2010
OpenGL 4.0 was released alongside version 3.3. It was designed for hardware able to support Direct3D 11.
As in OpenGL 3.0, this version of OpenGL contains a high number of fairly inconsequential extensions, designed to thoroughly expose the abilities of Direct3D 11-class hardware. Only the most influential extensions are listed below.
ARB Extension #69, The ability to set individual blend equations and blend functions for each color output
ARB Extension #70, Allows requesting that a fragment program is evaluated for each sample within a fragment, which increases the fidelity of multisampled anti-aliasing
ARB Extension #71
ARB Extension #72
ARB Extension #73
ARB Extension #87, A mechanism to supply the arguments to certain Draw functions from buffer-object memory, combined with transform feedback or , this allows GPUs to render without synchronising with CPUs
ARB Extension #88, interacts with ARB_gpu_shader_fp64, NV_gpu_shader5, ARB_sample_shading, ARB_texture_gather
ARB Extension #89, interacts with EXT_direct_state_access, NV_shader_buffer_load
ARB Extension #90, The ability to call different subroutines within a shader dynamically, without recompiling the source
ARB Extension #91, Two new shader stages (tessellation-control and tessellation-evaluation) to support efficient geometry generation on GPUs
ARB Extension #92
ARB Extension #93, A set of improvements to EXT_transform_feedback
ARB Extension #94
Hardware support: Nvidia
and newer, AMD
and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),
processors and newer.
Release date: July 26, 2010
ARB Extension #95, Full API compatibility with , interacts with ARB_tessellation_shader
ARB Extension #96, The ability to retrieve the content of program objects in a binary, vendor- eliminates the need to recompile shaders whenever the program is run, but the resulting binaries are not transferable between GPUs
ARB Extension #97, Program objects may be separately associated with each of the five shading stages, instead of using separate shader stages linked into a monol the extension also introduces glProgramUniform, which accepts a program object as parameter, thus enabling direct access to program's uniforms
ARB Extension #98, The ability to specify the precision of certain operations in the shading language
ARB Extension #99, Vertex attributes can be double-precision values
ARB Extension #100, The ability to define multiple viewports and scissor rectangles, to be used when generating several scenes at once from a geometry shader
Hardware support: Nvidia
and newer, AMD
and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),
processors and newer.
Minimum "maximum texture size" is 16,384 × 16,384 for GPU's implementing this specification.
Release date: August 8, 2011
Support for shaders with atomic counters and load-store-atomic read-modify-write operations to one level of a texture
Drawing multiple instances of data captured from GPU vertex processing (including tessellation), to enable complex objects to be efficiently repositioned and replicated
Support for modifying an arbitrary subset of a compressed texture, without having to re-download the whole texture to the GPU for significant performance improvements
ARB Extension #77, ARB_texture_compression required
ARB Extension #110
ARB Extension #114
ARB Extension #117, some textures required
ARB Extension #109, ARB_transform_feedback2 extension, ARB_draw_instanced extension required, interacts with the ARB_transform_feedback3 extension
ARB Extension #107, ARB_draw_instanced required
ARB Extension #115, interacts with ARB_separate_shader_objects, EXT_shader_image_load_store and some others trivially
ARB Extension #111
ARB Extension #108
ARB Extension #112, ARB_texture_multisample affects the definition of this extension
ARB Extension #113
ARB Extension #116
Hardware support: Nvidia
and newer, AMD
and newer (FP64 shaders implemented by emulation on some TeraScale GPUs), and
processors and newer. (Linux Mesa: Ivy Bridge and newer)
Release date: August 6, 2012
leveraging GPU parallelism within the context of the graphics pipeline
Shader storage buffer objects, allowing shaders to read and write buffer objects like image load/store from 4.2, but through the language rather than function calls.
Image format parameter queries
texture compression as a standard feature
Full compatibility with
Debug abilities to receive debugging messages during application development
Texture views to interpret textures in different ways without data replication
Increased memory security and multi-application robustness
ARB Extension #119, OpenGL ES Extension #118
ARB Extension #120
ARB Extension #121
ARB Extension #122, interacts ARB_shader_storage_buffer_object, NV_vertex_buffer_unified_memory
ARB Extension #123, interacts ARB_texture_view, EXT_texture_compression_s3tc, ARB_texture_compression_rgtc, ARB_texture_compression_bptc
ARB Extension #124, ARB_texture_storage required, interacts with ARB_internalformat_query2, EXT_texture_compression_s3tc, EXT_texture_sRGB, ARB_texture_storage_multisample
ARB Extension #125, EXT_direct_state_access interacton added with revision 3
ARB Extension #127, OpenGL 3.3, ARB_ES2_compatibility, ARB_invalidate_subdata, and ARB_texture_storage are required,
ETC2 and EAC texture compression formats added to OpenGL-ES 3.0, OES_compressed_ETC2_RGB8_texture, OES_compressed_ETC2_sRGB8_texture, OES_compressed_ETC2_punchthroughA_RGBA8_texture, OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture, OES_compressed_ETC2_RGBA8_texture, OES_compressed_ETC2_sRGB8_alpha8_texture, OES_compressed_EAC_R11_unsigned_texture, OES_compressed_EAC_R11_signed_texture, OES_compressed_EAC_RG11_unsigned_texture and OES_compressed_EAC_RG11_signed_texture required
ARB Extension #128, Requires ARB_explicit_attrib_location, interacts with ARB_shader_subroutine
ARB Extension #129, interacts with NV_gpu_program4
ARB Extension #130, ARB_framebuffer_object is required, interacts EXT_texture_array and EXT_direct_state_access
ARB Extension #131, ARB_internalformat_query required
ARB Extension #132
ARB Extension #133, ARB_draw_indirect required
ARB Extension #134
ARB Extension #135
ARB Extension #136, interacts with NV_gpu_program5 and EXT_shader_image_load_store
ARB Extension #137, ARB_program_interface_query required, interacts with ARB_compute_shader, ARB_program_interface_query, NV_bindless_texture
ARB Extension #138, ARB_depth_texture and EXT_packed_depth_stencil required
ARB Extension #139, ARB_texture_buffer_object required
ARB Extension #140
ARB Extension #141, ARB_texture_storage is required
Hardware support: Nvidia
and newer, AMD
and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),
processors and newer.
Release date: July 22, 2013
Enforced buffer object usage controls
Asynchronous queries into buffer objects
Expression of more layout controls of interface variables in shaders
Efficient binding of multiple objects simultaneously
ARB Extension #144
ARB Extension #145, with EXT_texture_integer, ARB_texture_buffer_object, ARB_texture_multisample, ARB_depth_texture, EXT_packed_depth_stencil and ARB_framebuffer_object, ARB_texture_stencil8, ARB_shader_image_load_store, ARB_internalformat_query2
ARB Extension #146, interacts ARB_explicit_attrib_location, ARB_vertex_attrib_64bit, ARB_transform_feedback3, ARB_separate_shader_objects, ARB_shader_storage_buffer_object, ARB_program_interface_query
ARB Extension #147, interacts with ARB_sampler_objects, ARB_vertex_attrib_binding
ARB Extension #148
ARB Extension #149, interacts with EXT_texture3D, ARB_texture_rectangle, ARB_sampler_objects
ARB Extension #150
ARB Extension #151, depends on ARB_vertex_attrib_binding, requires ARB_vertex_type_2_10_10_10_rev
Hardware support: Nvidia
and newer, AMD
and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),
processors and newer (Linux Mesa: Haswell and newer), .
Release date: August 11, 2014
Direct State Access (DSA) – object accessors enable state to be queried and modified without binding objects to contexts, for increased application and middleware efficiency and flexibility.
Flush Control – applications can control flushing of pending commands before context switching – enabling high-performance multit
Robustness – providing a secure platform for applications such as WebGL browsers, including preventing a GPU reset affecting any other
OpenGL ES 3.1 API and shader compatibility – to enable the easy development and execution of the latest OpenGL ES applications on desktop systems.
ARB Extension #159, required OpenGL 4.4, ARB_ES2_compatibility, ARB_ES3_compatibility
ARB Extension #160,
ARB Extension #161
ARB Extension #162
ARB Extension #163
ARB Extension #164
ARB Extension #165
ARB Extension #166, ARB_texture_multisample required, interacts with ARB_shader_image_load_store and GLSL 4.20, NV_gpu_program5, EXT_shader_image_load_store and NV_texture_multisample
ARB Extension #167
ARB Extension #168, OpenGL ES Extension #191 (for GL_KHR_context_flush_control only), EGL Extension #102 (for EGL_KHR_context_flush_control only)
ARB Extension #170, OpenGL ES Extension #190
OpenGL Extension #437, OpenGL ES Extension #161
Hardware support: Nvidia
and newer, AMD
and newer (FP64 shaders implemented by emulation on some TeraScale GPUs),
processors and newer (Linux Mesa: Haswell and newer), , and Tegra X1.
Release date: July 31, 2017
more efficient, GPU-sided,
more efficient
execution ()
more information through statistics, overflow query and counters
higher performance through no error handling contexts
offset function, solves a shadow rendering problem
ARB Extension #154,
ARB Extension #156,
ARB Extension #157, ARB_compute_shader required
ARB Extension #171, interacts with AMD_transform_feedback4
ARB Extension #173
ARB Extension #175, OpenGL ES Extension #243
ARB Extension #182, ARB_shader_atomic_counters required
ARB Extension #190, interacts with ARB_parallel_shader_compile, ARB_separate_shader_objects, ARB_program_interface_query
ARB Extension #193
ARB Extension #194, requires ARB_gl_spirv,
interacts with ARB_shader_ballot and SPV_KHR_shader_ballot, ARB_shader_draw_parameters and SPV_KHR_shader_draw_parameters, ARB_shader_group_vote and SPV_KHR_subgroup_vote, NV_stereo_view_rendering and SPV_NV_stereo_view_rendering, NV_viewport_array2 and SPV_NV_viewport_array2, ARB_shader_viewport_layer_array and SPV_NV_viewport_array2, NV_geometry_shader_passthrough and SPV_NV_geometry_shader_passthrough, NV_sample_mask_override_coverage and SPV_NV_sample_mask_override_coverage, AMD_shader_explicit_vertex_parameter and SPV_AMD_shader_explicit_vertex_parameter, AMD_gpu_shader_half_float and SPV_AMD_gpu_shader_half_float, ARB_shader_atomic_counter_ops and SPV_KHR_shader_atomic_counter_ops, ARB_post_depth_coverage, EXT_post_depth_coverage and SPV_KHR_post_depth_coverage, SPV_KHR_storage_buffer_storage_class
ARB Extension #195
Hardware support: Nvidia
and newer, Intel
and newer, AMD
and newer (FP64 shaders implemented by emulation on some TeraScale GPUs).
Driver support:
mostly supports OpenGL 4.6 by
18.0 for Intel Haswell+, AMD Radeon GCN, Nvidia Kepler+ 9 of 11 ARBs, Target full Support for the 18.1 release. Actual new Mesa 18.0: 26 other ARBs with some candidates for OpenGL 4.7 about 65% developed and other 35% in Development Plan ()
397.31 Graphics Driver on
bit only, no
support. Released April 2018
Adrenalin 18.4.1 Graphics Driver on
version 1803 (April 2018 update) for AMD Radeon(TM) HD 7700+, HD 8500+ and newer. Released April 2018.
Vulkan, formerly named the "Next Generation OpenGL Initiative" (glNext), is a grounds-up redesign effort to unify OpenGL and OpenGL ES into one common API that will not be backwards compatible with existing OpenGL versions.
The initial version of Vulkan API was released on 16 February 2016.
– OpenGL's legacy low-level shading language
- main competitor of OpenGL
– a graphics API once used on 3dfx Voodoo cards
- Graphics API for iOS, macOS, tvOS, watchOS
– Cross-platform audio library, designed to resemble OpenGL
– OpenGL for embedded systems
– API for audio on embedded systems, developed by the Khronos Group
– API for accelerated 2D graphics, developed by the Khronos Group
(RISpec) – Pixar's open API for photorealistic off-line rendering
– a debugger for OpenGL
– low-overhead, cross-platform 2D and 3D graphics API, the "next generation OpenGL initiative"
Lextrait, Vincent (January 2010). . Archived from
on May 30, .
. SGI 2012.
(PDF) 2017.
. faculty.ycp.edu.
. Archived from
on October 31, 2004.
Peddie, Jon (July 2012). . Computer Graphics World 2018.
. Khronos.org 2012.
. Khronos Group 2017.
. OpenGL Registry. Khronos Group.
. Khronos Group 2017.
. Khronos Group 2013.
. www.opengl.org. OpenGL 2014.
. Khronos Group.
. Archived from
on September 27, 2007.
. Computergram International. 1998. Archived from
. Khronos press release.
. AccessMyLibrary Archive.
Smith, Ryan (5 June 2018). . www.anandtech.com. Purch 2018.
Astle, Dave (). . gamedev.net.
Abi-Chahla, Fedy (September 16, 2008). . Tom's Hardware 2010.
(PDF) (Specification). 2.0. October 22, 2004.
. October 30, .
. Tech.slashdot.org 2012.
. OpenGL. August 18, .
. Intel Download Center. Archived from
on April 2, 2015.
. GameDev.net.
. NDTV Gadgets. April 17, 2015.
. The Khronos Group Inc 2015.
. Ars Technica 2015.
. Ustream. Archived from
on May 17, .
Kilgard, Mark.
. The Khronos Group Inc 2017.
. www.geeks3d.com.
. www.geeks3d.com.
. support.amd.com.
Dingman, Hayden (March 3, 2015). .
Bright, Peter (March 3, 2015). .
. AnandTech 2014.
. Phoronix 2014.
Shreiner, D Sellers, G et al. (30 March 2013). OpenGL Programming Guide: The Official Guide to Learning OpenGL. Version 4.3 (8th ed.). Addison-Wesley.  .
Sellers, G Wright, Richard S.; Haemel, Nicholas (31 July 2013). OpenGL SuperBible: Comprehensive Tutorial and Reference (6th ed.). Addison-Wesley.  .
(30 July 2009). OpenGL Shading Language (3rd ed.). Addison-Wesley.  .
. The OpenGL Extensions Guide. Charles River Media.  .
; Shreiner, Dave. OpenGL Reference Manual: The Official Reference Document to OpenGL. Version 1.4. Addison-Wesley.  .
; Shreiner, D et al. OpenGL Programming Guide: The Official Guide to Learning OpenGL. Version 2 (5th ed.). Addison-Wesley.  .
Wikimedia Commons has media related to .
Wikibooks has a book on the topic of:
with more information on OpenGL Language bindings
at Curlie (based on )
Angel, Edward & Shreiner, Dave (2013). . YouTube. SIGGRAPH University.
Standards of the
: Hidden categories:}

我要回帖

更多关于 手游模拟器安卓版排名 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信