2012-09-08 6 views
1

텍스처가있는 간단한 개체를 표시하고 내 장면에서 스포트 라이트를 사용하려고합니다. 나는 GLKBaseEffect's 질감 & 빛을 사용합니다.GLKBaseEffect : light + textures

텍스처가 비활성화 된 경우 - 조명 효과를 볼 수 있습니다 (객체를 회전하면 부분적으로 어두워 짐). 그러나 텍스처를 활성화하면 (GLKTextureInfo으로로드하고 -(void)glkView:drawInRect:에 바인딩) - 조명 효과가 사라집니다.

Google에서 검색하고 Apple의 설명서를 다시 읽으려고했지만 여전히 답을 찾을 수 없습니다.

는 UPDATE : - 빛이 어떻게 든 사용할 수 없게됩니다

_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

간단한 대답 ... _effect.texture2d0.envMode = GLKTextureEnvModeModulate;을 사용하여 입력 색상 (빛의 것)과 질감을 혼합해야합니다.