0

我正在尝试动态淡化项目,因为它们看起来更远。

我有这个效果很好,纹理显示很好但不会褪色。

 effect.texture2d0.enabled = GL_TRUE;
 effect.texture2d0.envMode = GLKTextureEnvModeReplace;
 effect.texture2d0.target = GLKTextureTarget2D;
 effect.texture2d0.name = texture.name;

 // transparancy
 glEnable(GL_BLEND);
 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

然后我将其更改为这个(基于一些堆栈溢出帖子)。启用 GLKTextureEnvModeModulate 或添加 glColor4f 会给我一个错误 GL ERROR: 0x0502

effect.texture2d0.enabled = GL_TRUE;
effect.texture2d0.envMode = GLKTextureEnvModeModulate;
effect.texture2d0.target = GLKTextureTarget2D;
effect.texture2d0.name = texture.name;

// transparancy
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // GL_SRC_ALPHA

glColor4f(0.7, 0.7, 0.7, 0.7);
4

1 回答 1

1

这是我所做的:

   self.effect.texture2d0.envMode = GLKTextureEnvModeModulate;
   self.effect.texture2d0.target = GLKTextureTarget2D;
   self.effect.texture2d0.name = mTexture.name;

   self.effect.texture2d1.envMode = GLKTextureEnvModeDecal;
   self.effect.texture2d1.target = GLKTextureTarget2D;
   self.effect.texture2d1.name = mTexture2.name;

您将获得混合,但我仍然无法应用动态不透明度系数。

于 2013-04-11T04:28:18.980 回答