OpenGL下的alpha融合

alpha混合理论见前一篇博客:http://blog.csdn.net/dizuo/archive/2009/12/18/5035371.aspx

alpha融合必须对物体设置不同的z值,可以通过glVertex3*绘制指定不同z值;或者通过glVertex2*绘制,调用glTranslate3f/d设置不同的z值。

opengl绘制二维图形,进行alpha融合时候,如果所有二维图形具有相同的zvalue=0.0f,即使进行了正确的alpha融合设置,最终每个图形只是和窗口背景进行融合,图形间的融合并不会融合。

 

图1:扇形的alpha  = 0.4f,矩形的alpha = 0.2f,二者的zvalue = 0.0f。观察可以发现他们都跟背景灰色进行了正确的alpha融合,但是二者间没有融合。

图2:扇形的alpha = 0.4f,zvalue = 0.0f;矩形的alpha = 0.2f,zvalue = 0.1f。此时融合正确!

其实就是一堆废话,但是就因为一个z值导致alpha混合失败,这个问题困扰了我好久~

 

-RYF 2011/4/16

绘制的时候,对所有的图形按照z值从小到大排序,顺序绘制,这样才能正确融合!!

-RYF 2012/3/3

谢谢gamemagic的指教,绘制2D禁掉深度测试,设置alpha值,可以达到预期的效果;或者开启深度测试模式下,所有图元必须按照深度值排序,从后往前绘制,,这个做法主要针对3D空间中。。。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值