1

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

4

1 に答える 1

2

簡単な答え..._effect.texture2d0.envMode = GLKTextureEnvModeModulate;入力色 (ライトの色) とテクスチャを混合するために使用する必要があります。

于 2012-09-14T08:42:08.583 に答える