dememax: (Hacker Emblem)
[personal profile] dememax
Может, кому-то пригодиться для быстрого понимания.
Это в основном цитаты из спецификации
http://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf
Попробовал разместить на Вики, но это - компиляция защищённого контента, ссылки на который я привёл в сноске, не пройдёт (спасибо Spintendo).

Client APIs

Rendering APIs such as OpenCL, OpenGL, OpenGL ES or OpenVG.

Display

All EGL objects are associated with an EGLDisplay, and exist in a namespace defined by that display.

It also defines EGL extensions through the eglQueryString() call.

Configuration

The configuration is used to create EGLSurface and EGLContext.

The EGLConfig describes the depth of the color buffer components and the types, quantities and sizes of the ancillary buffers (i.e., the depth, multisample, and stencil buffers).

Context

The definition of contexts depends on the client API, but usually represents the state vector of an abstract machine describing the client API and allows executing client API commands with respect to that state vector.

The client APIs rely on an implicit context used by all entry points, rather than passing an explicit context parameter. The implicit contexts used by these APIs are called current contexts.

The client API specifications are intentionally vague on how a rendering context (e.g. the state machine defined by a client API) is created.

Contexts for different client APIs all share the color buffer of a surface.

Each thread can have at most one current rendering context for each supported client API; for example, there may be both a current OpenGL ES context and a current OpenVG context in an implementation supporting both of these APIs. In addition, a context can be current to only one thread at a time.

Surface

Surface is an opaque type representing a drawing surface which client APIs can render content into using current context.

Ancillary buffers are associated with an EGLSurface, not with a context. If several contexts are all writing to the same surface, they will share those buffers.

The various buffers that may be contained by an EGLSurface, and the EGLConfig attributes controlling their creation.

Buffer

Not all buffers are used or required by all client APIs.

The color buffer contains pixel color values, and is shared by all client APIs rendering to a surface.

The alpha mask buffer is used only by OpenVG.

The depth buffer is shared by OpenGL and OpenGL ES. It contains fragment depth (Z) information generated during rasterization.

The stencil buffer is shared by OpenGL and OpenGL ES. It contains fragment stencil information generated during rasterization.

The multisample buffer may be shared by OpenGL, OpenGL ES and OpenVG, although such sharing cannot be guaranteed. It contains multisample information (color values, and possibly stencil and depth values) generated by multisample rasterization.

Для понимания, как соотносится понятие "default framebuffer", используемое в спецификации OpenGL (ES), и "surface" из EGL, очень помогает внимательное чтение описания вызова (есть, конечно, и другие места, например, в спецификации OpenGL ES):
EGLBoolean eglMakeCurrent(EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context);
в котором говорится:
The first time context is made current, if it is without a default framebuffer (e.g. both draw and read are EGL_NO_SURFACE ), then...
Но понятно, что установить эти поверхности можно только через установления контекста, и что surface из EGL является более общим понятием.

LJ: https://mpd.livejournal.com/182535.html

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 28th, 2025 10:46 am
Powered by Dreamwidth Studios