GLKBaseEffect
GLKBaseEffect
класс обеспечивает программы построения теней, подражающие многим способам поведения, предоставленным освещением OpenGL ES 1.1 и штриховкой модели, включая материалы, освещение и текстурирование. Основной эффект позволяет до трех световых сигналов и двум текстурам быть примененными к сцене.
Во время инициализации Ваше приложение сначала создает совместимый OpenGL или OpenGL контекст ES и делает его текущим. Затем это выделяет и инициализирует новый объект эффекта, конфигурирует свои свойства и вызывает его prepareToDraw
метод. Привязка эффекта заставляет программу построения теней быть скомпилированной и связанной с текущим контекстом. Основной эффект также требует, чтобы данные вершины были предоставлены Вашим приложением. Для снабжения данными вершины создайте один или несколько объектов массива вершины. Для каждого атрибута, требуемого программой построения теней, объект массива вершины должен включить атрибут и указать на данные, хранившие в буферном объекте вершины.
При рендеринге времени Ваше приложение вызывает эффект prepareToDraw
метод для подготовки эффекта. Затем это связывает объект массива вершины и представляет одну или более команд рисования.
Освещающие вычисления для основного эффекта сделаны в глазных пространственных координатах. light0
, light1
и light2
свойства занимают позицию и определяют направление световых сигналов основного эффекта. transform
свойство содержит матрицу представления модели, присвоенную сцене. Когда свет присваивается новая позиция или направление спота, те значения сразу изменяются матрицей представления текущей модели. Таким образом важно упорядочить изменения в матрице представления модели и изменения в световых сигналах для достижения желаемого легкого расположения. Легкие позиции, которые должны быть преобразованы в способ, подобный геометрии сцены, должны быть установлены после того, как матрица представления модели обновляется.
Разделение на подклассы примечаний
Несмотря на то, что этот класс может быть разделен на подклассы, нет никаких методов, которые Ваш подкласс может использовать для прямого переопределения базовой генерации программы построения теней. Вместо этого Ваш подкласс должен реализовать свою функциональность путем изменения значений существующих свойств, объявленных базовым классом.
Наследование
-
NSObject
-
GLKBaseEffect
-
GLKReflectionMapEffect
-
NSObject
-
GLKBaseEffect
-
GLKReflectionMapEffect
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
GLKNamedEffect
-
Hashable
-
NSObjectProtocol
-
Печатаемый
-
GLKNamedEffect
-
NSObject
Оператор импорта
Swift
import GLKit
Objective C
@import GLKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Строка раньше называла Ваш эффект.
Обсуждение
Имя эффекта не используется непосредственно GLKit, но распечатано, например, при журналировании объекта к консоли через
NSLog
функция.Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
преобразовать преобразовать
СвойствоКогда эффект связывается, modelview, проекция и трансформации текстуры применились к данным вершины. (только для чтения)
Объявление
Swift
var transform: GLKEffectPropertyTransform! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyTransform *transform
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
lightingType lightingType
СвойствоСтратегия использование эффекта для вычисления света оценивает в каждый фрагмент. Посмотрите
Determining How Lighting is Calculated
.Объявление
Swift
var lightingType: GLKLightingType
Objective C
@property(nonatomic, assign) GLKLightingType lightingType
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
lightModelTwoSided lightModelTwoSided
СвойствоБулево значение, указывающее, вычисляется ли освещение для обеих сторон примитива.
Объявление
Swift
var lightModelTwoSided: GLboolean
Objective C
@property(nonatomic, assign) GLboolean lightModelTwoSided
Обсуждение
Если значение
GL_TRUE
и задняя сторона примитива представляется, значения освещения вычисляются путем отрицания поверхности normals для примитива. Если значениеGL_FALSE
, тогда направление примитива проигнорировано при выполнении вычисления освещения. Значение по умолчаниюGL_FALSE
.Установка значения этого свойства к
GL_TRUE
может повлиять на производительность. Только используйте двухстороннее освещение, когда любая сторона примитива могла теоретически быть видима к камере.Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
Свойства материала, используемые при вычислении света, оценивают за представленный примитив. (только для чтения)
Объявление
Swift
var material: GLKEffectPropertyMaterial! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyMaterial *material
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
Цвет освещения применился ко всем примитивам, представленным эффектом.
Объявление
Objective C
@property(nonatomic, assign) GLKVector4 lightModelAmbientColor
Оператор импорта
Objective C
@import GLKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Свойства освещения для первого света в сцене. (только для чтения)
Объявление
Swift
var light0: GLKEffectPropertyLight! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyLight *light0
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
Свойства освещения для второго света в сцене. (только для чтения)
Объявление
Swift
var light1: GLKEffectPropertyLight! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyLight *light1
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
Свойства освещения для третьего света в сцене. (только для чтения)
Объявление
Swift
var light2: GLKEffectPropertyLight! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyLight *light2
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
texture2d0 texture2d0
СвойствоСвойства для первой текстуры. (только для чтения)
Объявление
Swift
var texture2d0: GLKEffectPropertyTexture! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyTexture *texture2d0
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
texture2d1 texture2d1
СвойствоСвойства для второй текстуры. (только для чтения)
Объявление
Swift
var texture2d1: GLKEffectPropertyTexture! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyTexture *texture2d1
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
textureOrder textureOrder
СвойствоПорядок, в котором текстуры применяются к представленным примитивам.
Объявление
Swift
var textureOrder: [AnyObject]!
Objective C
@property(nonatomic, copy) NSArray *textureOrder
Обсуждение
Значение этого свойства должно быть массивом, содержание которого - все
GLKEffectPropertyTexture
объекты, предоставленные эффектом. Порядок этих объектов в массиве определяет порядок, в котором текстуры применяются в программе построения теней. Например, для инвертирования порядка, что текстуры применяются к сцене приложение использовало бы следующий код:baseEffect.textureOrder = [NSArray arrayWithObjects: baseEffect.texture2d1, baseEffect.texture2d0, nil];
Значение по умолчанию является массивом, выполняющим наложения текстур в увеличивающемся порядке, пропуская любые невключенные наложения текстур.
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
Свойства вуали для применения к сцене. (только для чтения)
Объявление
Swift
var fog: GLKEffectPropertyFog! { get }
Objective C
@property(nonatomic, readonly) GLKEffectPropertyFog *fog
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
colorMaterialEnabled colorMaterialEnabled
СвойствоБулево значение, указывающее, использовать ли цветной атрибут вершины при вычислении взаимодействия света с материалом.
Объявление
Swift
var colorMaterialEnabled: GLboolean
Objective C
@property(nonatomic, assign) GLboolean colorMaterialEnabled
Обсуждение
Если значение установлено в
GL_TRUE
, тогда атрибут цвета, предоставленный в данных вершины, используется в качестве цвета материала при выполнении любых вычислений освещения. Если значение установлено вGL_FALSE
тогда цвета, сохраненные вmaterial
свойство используется для освещения примитива. Значение по умолчаниюGL_FALSE
.Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
useConstantColor useConstantColor
СвойствоБулево значение, указывающее, использовать ли постоянный цвет.
Объявление
Swift
var useConstantColor: GLboolean
Objective C
@property(nonatomic, assign) GLboolean useConstantColor
Обсуждение
Если значение установлено в
GL_TRUE
, тогда значение, сохраненное вconstantColor
свойство используется в качестве значения цвета для каждой вершины. Если значение установлено вGL_FALSE
, тогда Ваше приложение, как ожидают, включитGLKVertexAttribColor
припишите и предоставьте цветные данные на вершину. Значение по умолчаниюGL_FALSE
.Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.
-
constantColor constantColor
СвойствоПостоянный цвет, используемый, когда на вершину окрашивают данные, не предоставлен.
Объявление
Objective C
@property(nonatomic, assign) GLKVector4 constantColor
Оператор импорта
Objective C
@import GLKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Подготавливает эффект к рендерингу.
Объявление
Swift
func prepareToDraw()
Objective C
- (void)prepareToDraw
Обсуждение
Эффект должен быть подготовлен после того, как он сконфигурирован и снова когда Ваше приложение хочет использовать эффект представить любые примитивы. Когда Ваше приложение подготавливает эффект, некоторое состояние OpenGL изменено, чтобы позволить эффекту работать:
GL_CURRENT_PROGRAM
состояние всегда изменяется для указания на программу построения теней, предоставленную объектом эффекта.Когда текстурирование включено,
GL_TEXTURE_BINDING_2D
состояние может также измениться.
Если Ваше приложение требует, чтобы предыдущее состояние было сохранено, прежде чем эффект изменит их, это должно явно сохранить и восстановить значения.
Оператор импорта
Objective C
@import GLKit;
Swift
import GLKit
Доступность
Доступный в OS X v10.8 и позже.