【问题标题】:How to set the opacity of an image using OpenGL ES 2.0 and GLKit?如何使用 OpenGL ES 2.0 和 GLKit 设置图像的不透明度?
【发布时间】:2013-06-14 06:16:56
【问题描述】:

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

【问题讨论】:

    标签: ios opengl-es glkit


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-05
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多