gpt4 book ai didi

c++ - 在 OpenGL 中将粒子渲染为具有透明度的 GL_TRIANGLE_FAN

转载 作者:行者123 更新时间:2023-11-28 01:09:03 24 4
gpt4 key购买 nike

我想渲染带有淡出到外面的六边形的粒子。我为每个粒子使用了一个 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();

我得到一个闪烁的输出,在某些帧中,黑色透明部分绘制在不透明对象上。我必须如何更改我的渲染例程才能避免此错误?

output

最佳答案

您观察到的是位于其他粒子后面的粒子没有被绘制出来,因为 Z 缓冲区中存在更接近的 Z 值。

  1. 您可以将粒子从后向前拉。

  2. 您也可以禁用深度测试,但标准的 alpha 混合将不正确。使用 ALPHA/ONE 模式,您将累积所有粒子,因此顺序也不重要。

关于c++ - 在 OpenGL 中将粒子渲染为具有透明度的 GL_TRIANGLE_FAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com