首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从GLU Tesselator接收GLU_TESS_ERROR_5

从GLU Tesselator接收GLU_TESS_ERROR_5
EN

Stack Overflow用户
提问于 2010-08-05 11:36:43
回答 1查看 387关注 0票数 1

这就是我的问题。我正在镶嵌复杂的,自相交的,具有数百个顶点的多轮廓多边形。GLU Tesselator崩溃,出现空指针0x0000000问题。当我没有创建自交多边形时,它永远不会崩溃。如果它不相交,无论在什么情况下,它都不会崩溃。我在我的应用程序中到处检查NULL,我确信它不在我这一边。我发现了一个来自SGI的旧版本的GLU 1.2,它从来没有崩溃过,但是基于GLU 1.3的mesa和Windows版本都崩溃了。奇怪的是,在调试模式下没有任何东西会崩溃。为了获得更多信息,我编译了Mesa的GLU,发现第一个断言失败,然后如果我注释掉它,有一个指针从一个无法malloc的函数被设置为NULL。在这一点上,我非常不确定该做什么。我可以做些什么来尝试解决这个问题?我是否应该尝试制作一个适合我的Mesa的GLU版本?我只是不确定如何从这里开始。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-19 09:34:43

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

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

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

如果所有其他方法都失败了,您可以尝试使用其他库来执行镶嵌。经过快速搜索,三角1似乎是一个很好的候选者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3411570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档