0

我是 iOS 和 OpenGL 编程的新手,我目前正在编写一个使用 OpenGL ES 2.0 和 GLKit 进行练习的简单程序。现在我可以成功加载 PNG 文件并将其显示在屏幕上。

我在我的程序中使用了 GLKViewController,并在viewDidLoad. 这是我glkView:drawInRect方法中的代码:

glClearColor(115.0/255.0, 171.0/255.0, 245.0/255.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

self.effect.texture2d0.name = self.textureInfo.name;
self.effect.texture2d0.enabled = YES;

[self.effect prepareToDraw];

glEnableVertexAttribArray(GLKVertexAttribPosition);
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);

long offset = (long)&_quad;
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, sizeof(ImageVertex), (void*)(offset + offsetof(ImageVertex, geometryVertex)));
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(ImageVertex), (void*)(offset + offsetof(ImageVertex, textureVertex)));

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

上面的代码工作得很好。现在我想设置 PNG 图像的不透明度。这听起来很简单,但我不知道如何改变不透明度......

4

1 回答 1

0

我怀疑您的片段着色器为 gl_FragColor 的 alpha 通道提供了一个恒定的 1.0 值。该值应该不同以产生混合。请看这个问题的答案:

如何在 OpenGL ES 2.0 中获得 Alpha 混合透明度?

于 2013-06-13T22:16:56.797 回答