我是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图像的不透明度。这可能听起来很简单,但我不知道如何改变不透明度......
答案 0 :(得分:0)
我怀疑你的片段着色器为gl_FragColor的alpha通道提供了一个常量1.0值。该值应该变化以产生混合。请查看此问题的答案:
How can I get Alpha blending transparency working in OpenGL ES 2.0?