Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在OpenGL中将粒子渲染为具有透明度的GL_三角形_风扇_C++_Opengl_Graphics_Transparency_Alpha - Fatal编程技术网

C++ 在OpenGL中将粒子渲染为具有透明度的GL_三角形_风扇

C++ 在OpenGL中将粒子渲染为具有透明度的GL_三角形_风扇,c++,opengl,graphics,transparency,alpha,C++,Opengl,Graphics,Transparency,Alpha,我希望渲染具有六边形的粒子,这些六边形向外淡出。我对每个粒子使用了一个三角形风扇。但是,透明度看起来不是很好 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);

我希望渲染具有六边形的粒子,这些六边形向外淡出。我对每个粒子使用了一个三角形风扇。但是,透明度看起来不是很好

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();
我得到一个闪烁的输出,其中黑色透明部分在一些帧上画在不透明对象上。如何更改渲染例程以避免此错误


您所观察到的是其他粒子后面的粒子,它们不会被绘制,因为Z缓冲区中存在更接近的Z值

  • 可以将粒子拉回到前面

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


  • 您所观察到的是其他粒子后面的粒子,它们不会被绘制,因为Z缓冲区中存在更接近的Z值

  • 可以将粒子拉回到前面

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


  • 你的混合设置是什么样子的;啊,我发现了一个同事minecraft玩家(例如屏幕底部的minecraft图标):-)你的混合设置看起来怎么样;啊,我发现了一个minecraft玩家(例如屏幕底部的minecraft图标):-)