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;

Это должно делать свое дело

Другие вопросы по тегам