我已经成功地在 OpenGL 中绘制了两个平滑的形状,使用一个生成三角形 strip 的例程,其最外边线的所有顶点都在 alpha 0
处。 .现在我想将它们相交,但我似乎总是失去一个形状的平滑边缘。这是我正在使用的代码:
// Draw: smooth black shape as normal
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
// Draw: smooth black shape into alpha channel
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glBlendFunc(GL_DST_ALPHA, GL_SRC_ALPHA);
// Draw: Yellow overlay shape with black shape's alpha
// Reset blending modes for rest of program
这是结果(底部)——黄色形状失去了其平滑的右侧边缘,因为这些像素中的 alpha 现在为 1。我怎样才能获得平滑的相交形状?
最佳答案
你需要这样的片段:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
glEnable(GL_BLEND);
我认为一个关键元素是 glEnable(GL_BLEND)。
关于opengl-es - 如何在 OpenGL 中使两个平滑的形状相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15414808/