GLKBaseEffect: свет + текстуры

Я пытаюсь отобразить некоторый простой объект с текстурой и включить точечный свет в моей сцене. я использую GLKBaseEffect's текстура и свет.

Когда текстуры отключены - я вижу световой эффект (когда я вращаю объект, он частично становится темным, как и ожидалось). Но когда я включаю текстуры (загрузить их с GLKTextureInfo и связать в -(void)glkView:drawInRect:) - световой эффект исчезает.

Я пытался найти в Google и перечитать документацию Apple, но все еще не могу найти ответ.

ОБНОВИТЬ:

Вот код, который я использую для настройки света:

_effect.lightingType = GLKLightingTypePerPixel;
_effect.lightModelAmbientColor = GLKVector4Make(.3f, .3f, .3f, 1);
_effect.colorMaterialEnabled = GL_TRUE;

_effect.light0.enabled = GL_TRUE;
_effect.light0.spotCutoff = [[PRSettings instance] floatForKey:PRSettingsKeyLightSpotCutoff];
_effect.light0.spotExponent = [[PRSettings instance] floatForKey:PRSettingsKeyLightExponent];
_effect.light0.diffuseColor = _effect.light0.specularColor = GLKVector4Make(1, 1, 1, 1);
_effect.light0.position = GLKVector4Make(0, 0, 0, 1);
[_effect prepareToDraw];

Если я дважды назову этот код - свет как-то отключится. Даже без текстур - второй звонок - у меня света нет вообще.

1 ответ

Решение

Простой ответ... Следует использовать _effect.texture2d0.envMode = GLKTextureEnvModeModulate; смешать входной цвет (источник света) и текстуру.

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