テクスチャを使用して単純なオブジェクトを表示し、シーンでスポットライトを有効にしようとしています。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];
このコードを2回呼び出すと、ライトがどういうわけか無効になります。テクスチャがなくても-セカンドコール-私はまったく光がありません。