0

注意:我正在使用 GLKBaseEffect。

我不确定我做错了什么。基本上,对于我的 GLKBaseEffect,我设置了 2 个纹理。但我只看到渲染的第一个纹理(texture2d0)。我想让第二个纹理(texture2d1)与第一个纹理混合。

也许我的混合功能不正确,或者我使用 GLKBaseEffect 不正确。有什么明显的我做错了吗?

顺便说一句,我的两个图像都是 RGB(.PNG 格式),没有 alpha 通道。我的 texture2d1 图像(下图)是我想在我的第一个纹理上混合的纹理。就像 50% 叠加类型的混合。 在此处输入图像描述

////glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);
glEnable(GL_DEPTH_TEST);

[EAGLContext setCurrentContext:self.context];

// 1st texture
self.photoEffect = [[GLKBaseEffect alloc] init];
self.photoEffect.light0.enabled = GL_FALSE;
self.photoEffect.light0.diffuseColor = GLKVector4Make(1.0f, 1.0f, 1.0f, 0.5f);
self.photoEffect.lightingType = GLKLightingTypePerPixel;
self.photoEffect.lightModelAmbientColor = GLKVector4Make(1.0f, 1.0f, 1.0f, 0.5f);

// 2nd texture
self.photoEffect.texture2d1.envMode =  GLKTextureEnvModeModulate;
self.photoEffect.texture2d1.target = GLKTextureTarget2D;
self.photoEffect.texture2d1.enabled = TRUE;

UIImage *styleImage = [UIImage imageNamed:@"style_1.png"];
_photoStyleTextureId = [ImageLoader LoadGLKTextureInfo_ByImage:styleImage];
self.photoEffect.texture2d1.name = _photoStyleTextureId;
4

0 回答 0