我正在尝试将OGL ES 1.1代码转换为GLKit。 GLKit提供了一对纹理槽:
但是这似乎行不通。
我尝试过:
- texture2d0
- texture2d1
- GLKTextureEnvModeReplace,
- GLKTextureEnvModeModulate,
- GLKTextureEnvModeDecal
但是这似乎行不通。
我尝试过:
self.baseEffect.texture2d0.envMode = GLKTextureEnvModeReplace;
self.baseEffect.texture2d0.target = GLKTextureTarget2D;
self.baseEffect.texture2d0.name = [earthTextureDefault name];
self.baseEffect.texture2d1.envMode = GLKTextureEnvModeModulate;
self.baseEffect.texture2d1.target = GLKTextureTarget2D;
self.baseEffect.texture2d1.enabled = TRUE;
self.baseEffect.texture2d1.name = [textureClouds name];
我所得到的只有一个黑色的非纹理。无论是什么纹理,放置在0(1中没有任何东西)中都可以正常工作。第二个纹理是阴影的 alpha-to-white,而第一个纹理则是全部不透明,但调色板相当丰富。
我真正想做的是高效地应用动态生成/更新的混合。例如:
- 加载基础纹理
- 加载第二个纹理
- 加载混合蒙版,使它们混合
- 逐帧更新混合蒙版。无需重新上传前两个纹理
注:我不想放弃 GLKit 并编写自定义着色器来代替它。我想了解 GLKit 的工作原理——从事简单事情时,维护起来应该比我四处编写一堆着色器要容易得多。