在iPhone上使用glBlendFunc保持不透明度
我应该使用什么glBlendFunc来确保我的图形的不透明度始终相同?当我使用glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去_SRC_ALPHA)并将多个图像绘制在彼此的顶部时,结果越来越不透明,直到经过一定数量的imgae后完全不透明为止 我最接近的方法是使用glBlendFunc(GL_ONE_减去DST_ALPHA,GL_ONE_减去SRC_ALPHA),它可以保持恒定的不透明度,不管有多少图像彼此重叠,尽管如果图像彼此重叠,不透明度会略有变化 任何其他渲染状态我应该考虑尝试吗?还有其他想法吗?我正在为我的孩子制作一个绘图应用程序,我不希望他们绘制的图像(画笔)掩盖背景 这是我得到的最接近的答案:在iPhone上使用glBlendFunc保持不透明度,iphone,opengl-es,alphablending,Iphone,Opengl Es,Alphablending,我应该使用什么glBlendFunc来确保我的图形的不透明度始终相同?当我使用glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去_SRC_ALPHA)并将多个图像绘制在彼此的顶部时,结果越来越不透明,直到经过一定数量的imgae后完全不透明为止 我最接近的方法是使用glBlendFunc(GL_ONE_减去DST_ALPHA,GL_ONE_减去SRC_ALPHA),它可以保持恒定的不透明度,不管有多少图像彼此重叠,尽管如果图像彼此重叠,不透明度会略有变化 任何其他渲染状态我应该
我想让它,使重叠部分的圆圈是相同的颜色和不透明的中心部分的圆圈 我正在使用cocos2diphonev。0.99将(无透明度)绘制到渲染缓冲区中,然后将生成的图像用作主场景中部分透明四边形上的纹理 以下是预RBO OpenGL的方法,但不确定您的设备是否支持它,您可能需要将其转换为使用RBOs
- 请确保选择至少有一个辅助缓冲区的显示格式
- glGenTextures以分配纹理id
- glPushAttrib(GL\U颜色\U缓冲\U位)
- glDrawBuffer(AUX0)直接渲染到屏幕外位图
- glReadBuffer(AUX0)
- glCopyTexSubImage2D将图像转换为纹理
- glPopAttrib(GL\U COLOR\U BUFFER\U BIT)用于恢复绘图缓冲区设置
- glEnable(纹理_2D)
- glBindTexture
- glBegin(四边形)
- glColor(100%RGB,部分alpha)
- glTexCoord(四次)
- glVertex(四次)
- 格伦德
glAlphaFunc(GL_NOTEQUAL, 0);
[sprite1.texture setAliasTexParameters];
[sprite1 setBlendFunc: (ccBlendFunc) { GL_SRC_ALPHA, GL_ZERO }];
然后,当我绘制到我的CCRenderTexture时,我启用alpha测试,访问我的画笔精灵,然后禁用alpha测试。有没有可能得到一些代码?我不太明白你的意思。不幸的是,我没有权限发布我的源代码(它使用一个没有renderbuffer对象的OpenGL旧版本,但想法是一样的),但它几乎与双缓冲相同。我将把这些步骤添加到我的答案中。