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空间中。。。