Question

I'm trying to display some simple object with texture and enable spot light in my scene. I use GLKBaseEffect's texture & light.

When textures are disabled - I can see light effect (when I rotate object, it partly becomes dark, as expected). But when I enable textures (load them with GLKTextureInfo and bind in -(void)glkView:drawInRect:) - light effect disappears.

I've tried to search in Google and re-read Apple's documentation, but still can't find the answer.

UPDATE:

Here is the code, I use to setup light:

_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];

If I call this code twice - the light will be disabled somehow. Even without textures - second call - I there is no light at all.

Was it helpful?

Solution

Simple answer... Should use _effect.texture2d0.envMode = GLKTextureEnvModeModulate; to mix input color (the light's one) and texture.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top