我正在尝试使用纹理显示一些简单的对象,并在场景中启用聚光灯。我使用GLKBaseEffect's
纹理&光。
当纹理被禁用时 - 我可以看到光效(当我旋转对象时,它会部分变暗,如预期的那样)。但是当我启用纹理(用GLKTextureInfo
加载它们并在-(void)glkView:drawInRect:
中绑定)时 - 光效会消失。
我试图在谷歌搜索并重新阅读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];
如果我两次调用此代码 - 将以某种方式禁用灯光。即使没有纹理 - 第二次通话 - 我根本没有光。
答案 0 :(得分:2)
简单回答......应该使用_effect.texture2d0.envMode = GLKTextureEnvModeModulate;
来混合输入颜色(灯光的颜色)和纹理。