然而,无论我在这个地方画多少次,最终的颜色都不会变黑;实际上它在几行后就停止了变化. Photoshop说OpenGL中左边绘制的blob的Alpha值最大为0.8,我希望它为1.
我的应用程序通过绘制系列邮票,如Apple的GLPaint样本中形成一条线.邮票与以下功能混合:
glBlendFuncSeparate(GL_ONE,GL_ONE_MINUS_SRC_Alpha,GL_ONE_MINUS_DST_Alpha,GL_ONE);glBlendEquation(GL_FUNC_ADD);
我的片段着色器:
uniform lowp sampler2D u_texture;varying highp vec4 f_color;voID main(){ gl_Fragcolor = texture2D(u_texture,gl_PointCoord).aaaa*f_color*vec4(f_color.aaa,1);}
我应该如何配置混合以便在重复绘制时获得全彩色?
更新07/11/2013
也许我还应该注意,我首先绘制一个纹理,然后在屏幕上绘制纹理.使用以下代码生成纹理:
glGenFramebuffers(1,&textureFramebuffer); glBindFramebuffer(GL_FRAMEBUFFER,textureFramebuffer); glGenTextures(1,&drawingTexture); glBindTexture(GL_TEXTURE_2D,drawingTexture); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_liNEAR); glTexImage2D(GL_TEXTURE_2D,GL_RGBA,pixelWIDth,pixelHeight,GL_UNSIGNED_BYTE,NulL);
更新02/12/2013
我尝试修改Apple的GLPaint程序,结果发现这种行为只能在iOS7上观察到.正如在下面的屏幕截图中可以看到的那样,iOS 7上的颜色有点苍白,并且不能很好地融合.该
GL_ONE,GL_ONE_MINUS_SRC_Alpha
混合功能在iOS6上运行良好.这种行为可能是由iOS7的CALAyer或其他东西的实现引起的,我该如何解决?
2014年10月7日更新
Apple最近为iOS7更新了他们的GLPaint样本,并且在那里也可以观察到这个问题.我基于他们的代码创建了一个单独的线程:Unmodified iOS7 Apple GLPaint example blending issue
解决方法 仅仅因为你的画笔“变暗”图像并不意味着,这是减法混合.这是面对常规的添加剂混合,其中黑色画笔仅仅是过度绘制图片.您需要(GL_ONE,GL_ONE_MINUS_SRC_Alpha)混合功能(非分离).画笔仅包含在纹理的Alpha通道内,纹理中没有颜色通道,画笔颜色由glcolor或等效的均匀度决定.在大多数情况下,不需要使用目标Alpha值.
总结以上是内存溢出为你收集整理的ios – OpenGL减法混合全部内容,希望文章能够帮你解决ios – OpenGL减法混合所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)