2012-04-07 58 views
4

在iOS 5.0框架中有一個關於GLKit的簡單問題。iOS 5.0 GLKit GLKTextureLoader- glBindTexture在哪裏發生?

如果使用GLKTextureLoader,它只是在當前活動的紋理單元中加載紋理?我看了一些例子,我沒有看到任何你必須說的變量x中的GLKTextureInfo綁定到GL_TEXTURE0。

我見過一些例子,其中人們將glActiveTexture與GLKTextureLoader結合使用,但它看起來像紋理只是自動鎖定到活動紋理單元中。一旦我加載它,我只需要傳遞紋理座標?

在此先感謝。

+0

您曾經找到過這個問題的答案嗎? – cheeesus 2012-08-16 16:49:06

回答

3

在GLKTextureLoader載入您的GLKTextureInfo對象後,您就可以自己綁定紋理。因此,當GLKLTextureLoader完成加載時,您加載的紋理不會綁定到任何紋理單元。當你準備好畫,你叫:

glActiveTexture(GL_TEXTURE0); // to specify texture unit 0 
glBindTexture(textureInfo.target, textureInfo.name); 

我會極力reccommend書Learning OpenGL ES for iOS: A Hands-On Guide to Modern 3D Graphics Programming,因爲它展示了一個偉大的工作是什麼那張GLKit類中。你也可以參考我寫的使用GLKTextureLoader的演示代碼:https://github.com/joekim/MobileMeetup/tree/master/GLKitDemo

2

是的,有一些automagic正在進行。加載第二個紋理之後,該紋理將被綁定到GL_TEXTURE0,但是如果您希望它在GL_TEXTURE1中:

glActiveTexture(GL_TEXTURE1); 
glBindTexture(someTexture.target, someTexture.name); 
glUniform1i(u_someSampler, 1); // u_someSampler retrieved from prev call to glGetUniformLocation