2012-12-18 53 views
1

我需要設置常量射燈位置GLKBaseEffect常量定位光:所以當我改變模型觀察,光停留在同一個地方。我怎樣才能做到這一點?與GLKBaseEffect

回答

0

唯一的解決辦法幫我這裏是做自己的着色器。

1

當您使用GLKBaseEffect設置燈的位置時,它將使用當前存儲在其modelviewMatrix屬性中的值。所以,你需要爲你的對象設置這個值的兩倍,一次光,一旦:

self.effect.transform.modelviewMatrix = GLKMatrix4Identity; 
self.effect.light1.position = GLKVector4Make(0.0, 1.0, 3.0, 1); 

GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(0.0f, 0.0f, -3.0f); 
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, GLKMathDegreesToRadians(90), 0, 1, 0); 
self.effect.transform.modelviewMatrix = modelViewMatrix; 

這應該做的伎倆

+0

嗯。我的解決方案是錯誤的。似乎隨後的模型視圖修改也會影響光(對於OpenGL 1.0,它是例外的,'GLKBaseEffect'試圖模擬它)。 – kpower

+1

我要看看,但我的項目中繪製函數內聲明的時候能正常工作。我承認我主要使用OpenGL ES 2.0的着色器,正是因爲我知道我的代碼做什麼。雖然GLKBaseEffect模擬的OpenGL ES 1.1,很多的實現細節相當棘手和隱藏。一路着色! –

+0

非常同意你的看法。但現在我只是想節省時間:我不知道GLSL,並希望只是讓第一應用程序版本的ASAP。 – kpower