与 OpenGL 的重叠线

Posted

技术标签:

【中文标题】与 OpenGL 的重叠线【英文标题】:Overlapping lines with OpenGl 【发布时间】:2019-07-04 21:27:51 【问题描述】:

我有两条相互交叉的线,我已将这些线的不透明度设置为0.7。代码如下:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glLineWidth(7);
glBegin(GL_LINES);
glColor4f(0.9, 0.3, 0.4, 0.7);
glVertex2f(-1.0f, 0.8f);
glVertex2f(1.0f, 0.8f);
glEnd();
glLineWidth(10);
glBegin(GL_LINES);
glColor4f(0.9, 0.3, 0.4,0.7);
glVertex2f(-0.89f, -1.0f);
glVertex2f(-0.89f, 1.0f);
glEnd();

这是这个的输出:

由于线条不透明度设置为0.7,线条相交的部分应该比线条的其余部分暗一点。怎样才能得到这样的效果?

【问题讨论】:

什么意思? 您在搅拌机中使用了预乘 alpha。使用 GL_ONE 作为 glBlendFunc 的第二个参数 不,它只是让颜色更亮 是的,现在可以了,谢谢 深度测试,我禁用了 【参考方案1】:

所以这是深度测试,是有道理的。它只是覆盖了 zbuffer 中的相同位置。但是关于预乘 alpha 的注释仍然很重要。使用您最初指定的搅拌机,您必须将 rgb 值乘以 alpha 才能获得您想要的颜色。

【讨论】:

以上是关于与 OpenGL 的重叠线的主要内容,如果未能解决你的问题,请参考以下文章

在opengl中重叠矩形并在底部裁剪

2D OpenGL 场景因大量重叠形状而变慢

OpenGL着色器 - 重叠多个纹理

OpenGL:如何在 3d 模式下优化多层相互重叠的 2d 渲染?

用yum安装opengl库

OpenGL:使用退化三角形绘制线