我想渲染具有淡出到外面的六边形的粒子。我为每个粒子使用了TRIANGLE_FAN。但是,透明度看起来不太好。
glBegin(GL_TRIANGLE_FAN);
glColor4f(c.x, c.y, c.z, particle.temperature / 100.0);
glVertex3f(0, 0, 0);
glColor4f(0, 0, 0, 0);
glVertex3f(0.866025404 * H / 2, 0.5 * H / 2, 0);
glVertex3f(0, 1 * H / 2, 0);
// other vertices omitted
glEnd();
我得到一个闪烁的输出,并且在某些帧处将黑色透明部分绘制在不透明对象上。如何更改渲染例程以避免此错误?
答案 0 :(得分:3)
您正在观察的是其他不会被绘制的粒子,因为Z缓冲区中存在更接近的Z值。
您可以将粒子拉回到前面。
您也可以禁用深度测试,但标准Alpha混合将不正确。使用ALPHA / ONE模式,您将积累所有粒子,因此顺序也不重要。