gpt4 book ai didi

iphone - iPhone 上使用 glBlendFunc 实现恒定不透明度

转载 作者:行者123 更新时间:2023-12-03 21:12:18 27 4
gpt4 key购买 nike

我应该使用什么 glBlendFunc 来确保我的绘图的不透明度始终相同?当我使用 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 并在彼此之上绘制多个图像时,结果越来越不透明,直到经过一定数量的图像后完全不透明。

我最接近的是使用 glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ,无论有多少图像彼此重叠,它都会保持恒定的不透明度,尽管如果图像彼此重叠,不透明度会略有变化。

我应该考虑尝试其他渲染状态吗?还有其他想法吗?我正在为我的 child 制作一个绘图应用程序,我不希望他们绘制的图像(画笔)掩盖背景。

这是我得到的最接近的:
ImageShask http://img43.imageshack.us/img43/5347/img0085f.png

我想让圆圈的重叠部分与圆圈的中心部分具有相同的颜色和不透明度。

我使用的是 cocos2d iphone v.0.99

最佳答案

绘制(不透明)到渲染缓冲区中,然后将生成的图像用作主场景中部分透明的四边形上的纹理。

这是预 RBO OpenGL 的方法,但不确定您的设备是否支持它,您可能需要将其转换为使用 RBO。

  • 确保您选择的显示格式至少有一个 AUX 缓冲区
  • glGenTextures 分配纹理 ID
  • glPushAttrib(GL_COLOR_BUFFER_BIT)
  • glDrawBuffer(AUX0) 直接渲染到离屏位图
  • glReadBuffer(AUX0)
  • glCopyTexSubImage2D 将图像转换为纹理
  • glPopAttrib(GL_COLOR_BUFFER_BIT) 恢复绘制缓冲区设置
  • glEnable(Texture_2D)
  • glBindTexture
  • glBegin(QUADS)
  • glColor(100% RGB,部分 Alpha)
  • glTexCoord(四次)
  • glVertex(四次)
  • gl结束

请注意,您可以为多个帧重复使用相同的纹理,而不必每次都重新渲染它,您还可以通过创造性地使用纹理坐标到四顶点映射来进行一些旋转或拉伸(stretch)。

关于iphone - iPhone 上使用 glBlendFunc 实现恒定不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com