gpt4 book ai didi

c++ - 从 GLU Tesselator 接收 GLU_TESS_ERROR_5

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:01 26 4
gpt4 key购买 nike

这是我的问题。我正在 segmentation 复杂的、自相交的、具有数百个顶点的多轮廓多边形。 GLU Tesselator 因空指针 0x0000000 问题而崩溃。当我不制作自相交多边形时,它永远不会崩溃。如果不相交,无论在什么情况下都不会崩溃。我在我的应用程序中到处检查 NULL,我确定它不在我这边。我从 SGI 找到了一个旧版本的 GLU 1.2,它从来没有崩溃过,但是基于 GLU 1.3 的 mesa 和 Windows 版本都崩溃了。在 Debug模式下没有什么崩溃足够奇怪。为了获得更多信息,我编译了 Mesa 的 GLU 并看到首先一个断言失败,然后如果我注释掉它,就会有一个指针从一个无法 malloc 的函数中设置为 NULL。我现在非常不确定该怎么做。我该怎么做才能解决这个问题?我应该尝试制作一个适合我的 Mesa 的 GLU 版本吗?我只是不确定如何从这里开始。

经过更多调试后,我发现我得到了 GLU_TESS_ERROR_5,我认为这是一个数字太大的错误,但我做了一个 for 循环来测试大于该数字的数字,但没有运气 :(

最佳答案

至少在 Windows 上,GLU_TESS_ERROR_5 意味着其中一个坐标太大。具体来说,GLU 要求坐标足够小,可以相乘而不会溢出。规范说限制是在常量 GLU_TESS_COORD_TOO_LARGE 中定义的。如果这个常数存在,检查每个坐标的绝对值是否小于它。如果不是,我认为检查坐标是否在 - 10^150 和 10^150 之间是安全的。如果这不起作用,请尝试逐步缩小范围。

也可能是几何有问题,引发了GLU的另一个问题。尝试找到将触发此错误的最简单的多边形。

如果这不起作用,请查看是否有更新版本的 GLU 可用。我不知道 Mesa,但 VC++ 附带的 OpenGL 版本已经过时了。

如果一切都失败了,您可以尝试使用另一个库来执行曲面 segmentation 。快速搜索后,三角1似乎是一个不错的候选人。

关于c++ - 从 GLU Tesselator 接收 GLU_TESS_ERROR_5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3411570/

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