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!(APIapi: 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!(APIapi: EAGLRenderingAPI, sharegroupsharegroup: EAGLSharegroup!)Objective C
- (instancetype)initWithAPI:(EAGLRenderingAPI)apisharegroup:(EAGLSharegroup *)sharegroupПараметры
apiТребуемая версия OpenGL ES, представляющий API. Для юридических значений посмотрите OpenGL Версии ES.
sharegroupsharegroup получен от другого
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Контекст рендеринга, который Вы хотите сделать текущим.
Возвращаемое значение
YEStrueесли успешный; иначе,NOfalse. Если ошибка произошла, контекст рендеринга для текущего потока остается неизменным.Обсуждение
Контекст инкапсулирует весь 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)targetfromDrawable:(id<EAGLDrawable>)drawableПараметры
targetOpenGL точка привязки ES для в настоящее время связанного renderbuffer. Значение этого параметра должно быть
GL_RENDERBUFFER(илиGL_RENDERBUFFER_OESв контексте OpenGL ES 1.1).drawableОбъект, управляющий хранилищем данных для renderbuffer. В iOS значение этого параметра должно быть a
CAEAGLLayerобъект.Возвращаемое значение
YEStrueесли успешный; иначе,NOfalse.Обсуждение
Для создания 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Параметры
targetOpenGL точка привязки ES для в настоящее время связанного renderbuffer. Значение этого параметра должно быть
GL_RENDERBUFFER(илиGL_RENDERBUFFER_OESв контексте OpenGL ES 1.1).Возвращаемое значение
YEStrueесли успешный; иначе,NOfalse.Обсуждение
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: BoolObjective C
@property(getter=isMultiThreaded, nonatomic) BOOL multiThreadedОбсуждение
Установите значение этого свойства к
YEStrueвключить многопоточность в OpenGL ES. Многопоточный OpenGL контекст ES автоматически создает рабочий поток и передает некоторые его вычисления к тому потоку. Когда Вы включаете многопоточность на многожильном устройстве, внутренний OpenGL вычисления ES, выполняемые на действии CPU параллельно с Вашим приложением, улучшая производительность.Когда значение этого свойства
NOfalse(значение по умолчанию), OpenGL, ES выполняет любые основанные на CPU вычисления для команды на потоке, от которого это вызвали.Если текущее устройство не поддерживает многопоточный OpenGL ES, значение этого свойства всегда
NOfalse— попытка установить значение вYEStrueне имеет никакого эффекта.Оператор импорта
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, };Константы
-
OpenGLES1kEAGLRenderingAPIOpenGLES1Контекст поддерживает OpenGL ES 1.x рендеринг API.
Доступный в iOS 2.0 и позже.
-
OpenGLES2kEAGLRenderingAPIOpenGLES2Контекст поддерживает OpenGL ES 2.x рендеринг API.
Доступный в iOS 3.0 и позже.
-
OpenGLES3kEAGLRenderingAPIOpenGLES3Контекст поддерживает OpenGL ES 3.x рендеринг API.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import OpenGLES;Swift
import OpenGLESДоступность
Доступный в iOS 2.0 и позже.
-
