gpt4 book ai didi

c++ - OpenGL GL_POLYGON 打印不正确

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:39 24 4
gpt4 key购买 nike

我正在绘制一个基本的多边形,它有 5 个边,看起来几乎像一个 C 形。

(50,60) _____(70,60)
| /
| /
| /(60,40)
| \
| \
(50,20)|____\(70,20)

非常简单。

当我使用

wcPt2D verts[5] = {{50,20}, {70,20}, {**60**,40}, {70,60}, {50,60}};

enter image description here

我明白了。预期的。但是当我将中心部分更改为

wcPt2D verts[5] = {{50,20}, {70,20}, {**51**,40}, {70,60}, {50,60}};

我明白了

enter image description here

这显然不是距离左墙 1 个单位/图像 1 左侧的 9 个单位,并且它明显将 y 值降低了大约 10 个单位。这是为什么?

void polygon (wcPt2D *verts)
{
GLint k;

glBegin(GL_POLYGON);
for (k = 0; k < 5; k++)
{
glVertex2f(verts [k].x,verts [k].y);
}
glEnd();
}

最佳答案

GL_POLYGON 的行为仅针对凸多边形定义。您的多边形是凹面,因此此函数的行为未定义(而且,正如您所观察到的,它并不总是有效)。

您需要将多边形分解为一个或多个凸多边形才能使其正常工作。在您的情况下,一种简单的方法是在多边形上水平“切割”:

(50,60) _____(70,60)       |    /       |   /(50,40)|__/(60,40)       |  \       |   \(50,20)|____\(70,20)

关于c++ - OpenGL GL_POLYGON 打印不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15935507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com