user276668 Asked:2020-12-04 19:15:32 +0000 UTC2020-12-04 19:15:32 +0000 UTC 2020-12-04 19:15:32 +0000 UTC 平滑时所有多边形的可见边缘 772 我画了一个圆角矩形,我想平滑角落。但是平滑效果出乎意料。构成图形的所有多边形的面都变得可见(光条纹)。 glEnable(GL_POLYGON_SMOOTH); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); c++ 1 个回答 Voted Best Answer Kromster 2020-12-04T19:53:22Z2020-12-04T19:53:22Z 为什么会这样: 您绘制第一个多边形。假设它的边缘正好位于像素的中间(50% 重叠)。像素颜色(比如白色)和多边形颜色(比如 100% 红色)之间的平均值将被写入像素。现在您绘制第二个多边形,它也有一条恰好位于像素中间的边缘(50% 重叠)。像素还将写入当前像素颜色(现在是 50% 红色和 50% 白色)和多边形颜色(100% 红色)之间的平均值。结果,像素颜色为 75% 红色和 25% 白色 - 这是您的“可见”边缘。 PS因此,您还注意到顶部和底部比中间轻。 如何绘制一个平滑的矩形: 启用硬件平滑 绘制一个不平滑的多边形,但在它上面绘制它的轮廓glEnable(GL_LINE_SMOOTH) 放弃多边形形状,而是绘制一个带有纹理的精灵
为什么会这样:
您绘制第一个多边形。假设它的边缘正好位于像素的中间(50% 重叠)。像素颜色(比如白色)和多边形颜色(比如 100% 红色)之间的平均值将被写入像素。现在您绘制第二个多边形,它也有一条恰好位于像素中间的边缘(50% 重叠)。像素还将写入当前像素颜色(现在是 50% 红色和 50% 白色)和多边形颜色(100% 红色)之间的平均值。结果,像素颜色为 75% 红色和 25% 白色 - 这是您的“可见”边缘。
PS因此,您还注意到顶部和底部比中间轻。
如何绘制一个平滑的矩形:
glEnable(GL_LINE_SMOOTH)