与 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 的重叠线的主要内容,如果未能解决你的问题,请参考以下文章