如何使用OpenGL ES 2.0和GLKit设置图像的不透明度?

时间:2013-06-01 10:38:20

标签: ios opengl-es glkit

我是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图像的不透明度。这可能听起来很简单,但我不知道如何改变不透明度......

1 个答案:

答案 0 :(得分:0)

我怀疑你的片段着色器为gl_FragColor的alpha通道提供了一个常量1.0值。该值应该变化以产生混合。请查看此问题的答案:

How can I get Alpha blending transparency working in OpenGL ES 2.0?