GLKBaseEffect:光+纹理

时间:2012-09-08 08:23:02

标签: ios5 textures glkit light glkbaseeffect

我正在尝试使用纹理显示一些简单的对象,并在场景中启用聚光灯。我使用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];

如果我两次调用此代码 - 将以某种方式禁用灯光。即使没有纹理 - 第二次通话 - 我根本没有光。

1 个答案:

答案 0 :(得分:2)

简单回答......应该使用_effect.texture2d0.envMode = GLKTextureEnvModeModulate;来混合输入颜色(灯光的颜色)和纹理。