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;
смешать входной цвет (источник света) и текстуру.