Const позиционированный свет с GLKBaseEffect
Мне нужно установить постоянное местное освещение с помощью GLKBaseEffect: поэтому, когда я меняю вид модели, свет остается на том же месте. Как мне этого добиться?
2 ответа
Решение
Единственное решение, которое мне здесь помогло, - сделать собственные шейдеры.
Когда вы устанавливаете положение источника света с помощью GLKBaseEffect, он использует значение, которое в данный момент хранится в его свойстве modelviewMatrix. Итак, вам нужно установить это значение дважды, один раз для освещения и один раз для вашего объекта:
self.effect.transform.modelviewMatrix = GLKMatrix4Identity;
self.effect.light1.position = GLKVector4Make(0.0, 1.0, 3.0, 1);
GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -3.0f);
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, GLKMathDegreesToRadians(90), 0, 1, 0);
self.effect.transform.modelviewMatrix = modelViewMatrix;
Это должно делать свое дело