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: GLKLightingTypeObjective C
@property(nonatomic, assign) GLKLightingType lightingTypeОператор импорта
Objective C
@import GLKit;Swift
import GLKitДоступность
Доступный в OS X v10.8 и позже.
-
lightModelTwoSided lightModelTwoSidedСвойствоБулево значение, указывающее, вычисляется ли освещение для обеих сторон примитива.
Объявление
Swift
var lightModelTwoSided: GLbooleanObjective 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: GLbooleanObjective 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: GLbooleanObjective 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 и позже.
