EAGLContext
Оператор импорта
Swift
import OpenGLES
Objective C
@import OpenGLES;
Доступность
Доступный в iOS 2.0 и позже.
EAGLContext
объект управляет OpenGL контекст рендеринга ES — информация состояния, команды, и ресурсы должны были нарисовать использование OpenGL ES. Для выполнения команд OpenGL ES Вам нужен текущий контекст рендеринга.
Получением ресурсов, таких как текстуры и renderbuffers, управляют для EAGLContext
объект EAGLSharegroup
объект связался с контекстом. Когда Вы инициализируете новое EAGLContext
объект, можно принять решение иметь его, создают новый sharegroup, или можно использовать тот, полученный из ранее создаваемого контекста.
Прежде, чем нарисовать к контексту, необходимо связать полный объект кадрового буфера с контекстом. Для получения дополнительной информации о конфигурировании контекстов рендеринга посмотрите OpenGL Руководство по программированию ES для iOS.
-
Инициализирует и возвращает недавно выделенный контекст рендеринга с указанной версией OpenGL ES, представляющий API.
Объявление
Swift
convenience init!(API
api
: EAGLRenderingAPI)Objective C
- (instancetype)initWithAPI:(EAGLRenderingAPI)
api
Параметры
api
Требуемая версия OpenGL ES, представляющий API. Для юридических значений посмотрите OpenGL Версии ES.
Возвращаемое значение
Инициализированный объект контекста, или
nil
если не мог бы быть создан объект.Обсуждение
Для выдачи команд OpenGL ES к этому контексту необходимо сначала сделать контекст текущим путем вызова
setCurrentContext:
.Вызов
initWithAPI:
создает новоеEAGLSharegroup
объект и присоединения это к этому контексту.Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
-
init (API:sharegroup:) - initWithAPI:sharegroup:
Определяемый инициализаторИнициализирует и возвращает недавно выделенный контекст рендеринга с указанной версией OpenGL ES, представляющий API и указанный sharegroup.
Объявление
Swift
init!(API
api
: EAGLRenderingAPI, sharegroupsharegroup
: EAGLSharegroup!)Objective C
- (instancetype)initWithAPI:(EAGLRenderingAPI)
api
sharegroup:(EAGLSharegroup *)sharegroup
Параметры
api
Требуемая версия OpenGL ES, представляющий API. Для юридических значений посмотрите OpenGL Версии ES.
sharegroup
sharegroup получен от другого
EAGLContext
объект.Возвращаемое значение
Инициализированный объект контекста, или
nil
если не мог бы быть создан объект.Обсуждение
Для выдачи команд OpenGL ES к этому контексту необходимо сначала сделать его текущим контекстом получения путем вызова
setCurrentContext:
.Объекты ES OpenGL, такие как текстуры, renderbuffers, кадровые буферы и буферы вершины совместно используются через все контексты, создающиеся с тем же sharegroup. Чтобы указать, что новый контекст должен быть инициализирован в существующем sharegroup, получите
sharegroup
свойство от ранее инициализированного контекста и передачи это в качестве параметра к этому методу инициализации. Передачаnil
какsharegroup
параметр для создания новогоEAGLSharegroup
объект, присоединенный к контексту.Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
-
Делает указанный контекст текущим контекстом рендеринга для вызывающего потока.
Объявление
Swift
class func setCurrentContext(_
context
: EAGLContext!) -> BoolObjective C
+ (BOOL)setCurrentContext:(EAGLContext *)
context
Параметры
context
Контекст рендеринга, который Вы хотите сделать текущим.
Возвращаемое значение
YES
true
если успешный; иначе,NO
false
. Если ошибка произошла, контекст рендеринга для текущего потока остается неизменным.Обсуждение
Контекст инкапсулирует весь OpenGL состояние ES для единственного потока в Вашем приложении. При вызове любого OpenGL API-функция ES OpenGL , ES оценивает его относительно текущего контекста вызывающего потока. Поскольку OpenGL , функции ES требуют текущего контекста, необходимо использовать этот метод для выбора контекста для текущего потока прежде, чем вызвать любой OpenGL функция ES. Если не указано иное вызовы команд OpenGL ES сделали в том же контексте завершенный в порядке, их вызывают.
OpenGL ES сохраняет контекст, когда это сделано текущим, и это выпускает предыдущий контекст. Чтобы препятствовать тому, чтобы нетекущий контекст был освобожден, Ваше приложение должно сохранить a
strong
ссылка на контекст (или сохраняют его, при использовании подсчета ссылки на руководство). Вызов этого метода с anil
параметр выпускает текущий контекст и оставляет OpenGL ES развязанный к любому контексту получения.Необходимо избежать делать тот же контекст текущим на многократных потоках. OpenGL ES не обеспечивает потокобезопасности, поэтому если Вы хотите использовать тот же контекст на многократных потоках, необходимо использовать некоторую форму синхронизации потока для предотвращения одновременного доступа к тому же контексту от многократных потоков.
Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
-
Связывает хранение drawable объекта с OpenGL ES renderbuffer объект.
Объявление
Swift
func renderbufferStorage(_
target
: Int, fromDrawabledrawable
: EAGLDrawable!) -> BoolObjective C
- (BOOL)renderbufferStorage:(NSUInteger)
target
fromDrawable:(id<EAGLDrawable>)drawable
Параметры
target
OpenGL точка привязки ES для в настоящее время связанного renderbuffer. Значение этого параметра должно быть
GL_RENDERBUFFER
(илиGL_RENDERBUFFER_OES
в контексте OpenGL ES 1.1).drawable
Объект, управляющий хранилищем данных для renderbuffer. В iOS значение этого параметра должно быть a
CAEAGLLayer
объект.Возвращаемое значение
YES
true
если успешный; иначе,NO
false
.Обсуждение
Для создания renderbuffer, который может быть представлен экрану Вы связываете renderbuffer и затем выделяете совместно используемую память для него путем вызова этого метода. Этот вызов метода заменяет вызов, обычно выполненный к
glRenderbufferStorage
. renderbuffer, хранение которого было выделено с этим методом, может позже быть выведен на экран с вызовом кpresentRenderbuffer:
.Ширина, высота и внутренний цветной буферный формат получены из характеристик drawable объекта. Можно переопределить внутренний цветной буферный формат путем добавления
kEAGLDrawablePropertyColorFormat
ключ кdrawableProperties
словарь drawable объекта прежде, чем вызвать этот метод.Чтобы указать, что OpenGL ES renderbuffer должен быть отсоединен от drawable объекта, вызовите этот метод с
drawable
набор параметра кnil
.Специальные замечания
В iOS 6.0 и позже, этот метод автоматически сбрасывает OpenGL буфер команд ES, делая его неподходящим для вызова неоднократно в критическом по отношению к производительности коде.
Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
-
Выводит на экран содержание renderbuffer на экране.
Объявление
Swift
func presentRenderbuffer(_
target
: Int) -> BoolObjective C
- (BOOL)presentRenderbuffer:(NSUInteger)
target
Параметры
target
OpenGL точка привязки ES для в настоящее время связанного renderbuffer. Значение этого параметра должно быть
GL_RENDERBUFFER
(илиGL_RENDERBUFFER_OES
в контексте OpenGL ES 1.1).Возвращаемое значение
YES
true
если успешный; иначе,NO
false
.Обсуждение
renderbuffer, который будет выведен на экран, должно быть, был выделенным хранением с помощью
renderbufferStorage:fromDrawable:
метод. Точная семантика для того, как и тем, когда renderbuffer содержание выведено на экран, управляет drawable объект.Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
API
СвойствоOpenGL ES, представляющий версию API, поддерживается контекстом. (только для чтения)
Объявление
Swift
var API: EAGLRenderingAPI { get }
Objective C
@property(readonly) EAGLRenderingAPI API
Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
-
sharegroup
СвойствоОбъект sharegroup контекста. (только для чтения)
Объявление
Swift
var sharegroup: EAGLSharegroup! { get }
Objective C
@property(readonly) EAGLSharegroup *sharegroup
Обсуждение
Получите sharegroup контекста, когда Вы захотите создать два или больше контекста тот рендеринг доли ресурсы. Вызвать
initWithAPI:
для инициализации первого контекста получите его sharegroup, и затем инициализируйте дополнительные контексты путем вызоваinitWithAPI:sharegroup:
, передача этого sharegroup как параметр.Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
См. также
-
debugLabel
СвойствоМетка, описывающая контекст для использования в отладке.
Объявление
Swift
var debugLabel: String!
Objective C
@property(copy, nonatomic) NSString *debugLabel
Обсуждение
Используйте это свойство для обеспечения понятного имени для контекста. Эта метка, появляющаяся в интерфейсе Xcode OpenGL ES Frame Debugger, упрощает для Вас более легко отслеживать различные контексты при отладке приложения мультиконтекста.
Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 6.0 и позже.
-
Возвращает текущий контекст рендеринга для вызывающего потока.
Объявление
Swift
class func currentContext() -> EAGLContext!
Objective C
+ (EAGLContext *)currentContext
Возвращаемое значение
Текущий контекст для вызывающего потока.
Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
-
multiThreaded
СвойствоБулево значение, определяющее, задерживает ли OpenGL ES работу к другому потоку.
Объявление
Swift
var multiThreaded: Bool
Objective C
@property(getter=isMultiThreaded, nonatomic) BOOL multiThreaded
Обсуждение
Установите значение этого свойства к
YES
true
включить многопоточность в OpenGL ES. Многопоточный OpenGL контекст ES автоматически создает рабочий поток и передает некоторые его вычисления к тому потоку. Когда Вы включаете многопоточность на многожильном устройстве, внутренний OpenGL вычисления ES, выполняемые на действии CPU параллельно с Вашим приложением, улучшая производительность.Когда значение этого свойства
NO
false
(значение по умолчанию), OpenGL, ES выполняет любые основанные на CPU вычисления для команды на потоке, от которого это вызвали.Если текущее устройство не поддерживает многопоточный OpenGL ES, значение этого свойства всегда
NO
false
— попытка установить значение вYES
true
не имеет никакого эффекта.Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 7.1 и позже.
-
Версии OpenGL ES, который обеспечивает контекст рендеринга.
Объявление
Swift
enum EAGLRenderingAPI : UInt { case OpenGLES1 case OpenGLES2 case OpenGLES3 }
Objective C
typedef NSUInteger EAGLRenderingAPI; enum { kEAGLRenderingAPIOpenGLES1 = 1, kEAGLRenderingAPIOpenGLES2 = 2, kEAGLRenderingAPIOpenGLES3 = 3, };
Константы
-
OpenGLES1
kEAGLRenderingAPIOpenGLES1
Контекст поддерживает OpenGL ES 1.x рендеринг API.
Доступный в iOS 2.0 и позже.
-
OpenGLES2
kEAGLRenderingAPIOpenGLES2
Контекст поддерживает OpenGL ES 2.x рендеринг API.
Доступный в iOS 3.0 и позже.
-
OpenGLES3
kEAGLRenderingAPIOpenGLES3
Контекст поддерживает OpenGL ES 3.x рендеринг API.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import OpenGLES;
Swift
import OpenGLES
Доступность
Доступный в iOS 2.0 и позже.
-