- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现我的应用程序因空引用异常而崩溃,就在 GLU 源代码的 sweep.c 中:
static void ConnectLeftVertex( GLUtesselator *tess, GLUvertex *vEvent )
/*
* Purpose: connect a "left" vertex (one where both edges go right)
* to the processed portion of the mesh. Let R be the active region
* containing vEvent, and let U and L be the upper and lower edge
* chains of R. There are two possibilities:
*
* - the normal case: split R into two regions, by connecting vEvent to
* the rightmost vertex of U or L lying to the left of the sweep line
*
* - the degenerate case: if vEvent is close enough to U or L, we
* merge vEvent into that edge chain. The subcases are:
* - merging with the rightmost vertex of U or L
* - merging with the active edge of U or L
* - merging with an already-processed portion of U or L
*/
{
ActiveRegion *regUp, *regLo, *reg;
GLUhalfEdge *eUp, *eLo, *eNew;
ActiveRegion tmp;
/* assert( vEvent->anEdge->Onext->Onext == vEvent->anEdge ); */
/* Get a pointer to the active region containing vEvent */
tmp.eUp = vEvent->anEdge->Sym;
/* __GL_DICTLISTKEY */ /* __gl_dictListSearch */
regUp = (ActiveRegion *)dictKey( dictSearch( tess->dict, &tmp ));
regLo = RegionBelow( regUp );
eUp = regUp->eUp;
eLo = regLo->eUp; //CRASHES RIGHT HERE SINCE RegLo is = 0x000000 FOR SOME REASON
/* Try merging with U or L first */
if( EdgeSign( eUp->Dst, vEvent, eUp->Org ) == 0 ) {
ConnectLeftDegenerate( tess, regUp, vEvent );
return;
}
/* Connect vEvent to rightmost processed vertex of either chain.
* e->Dst is the vertex that we will connect to vEvent.
*/
reg = VertLeq( eLo->Dst, eUp->Dst ) ? regUp : regLo;
if( regUp->inside || reg->fixUpperEdge) {
if( reg == regUp ) {
eNew = __gl_meshConnect( vEvent->anEdge->Sym, eUp->Lnext );
if (eNew == NULL) longjmp(tess->env,1);
} else {
GLUhalfEdge *tempHalfEdge= __gl_meshConnect( eLo->Dnext, vEvent->anEdge);
if (tempHalfEdge == NULL) longjmp(tess->env,1);
eNew = tempHalfEdge->Sym;
}
if( reg->fixUpperEdge ) {
if ( !FixUpperEdge( reg, eNew ) ) longjmp(tess->env,1);
} else {
ComputeWinding( tess, AddRegionBelow( tess, regUp, eNew ));
}
SweepEvent( tess, vEvent );
} else {
/* The new vertex is in a region which does not belong to the polygon.
* We don''t need to connect this vertex to the rest of the mesh.
*/
AddRightEdges( tess, regUp, vEvent->anEdge, vEvent->anEdge, NULL, TRUE );
}
}
似乎 eRegLo 有时是一个 NULL 指针,这会导致我的应用程序崩溃。我如何修改源代码以防止它使我的应用程序崩溃?
谢谢
最佳答案
您必须查看 RegionBelow
的源代码,看看它是否以及何时可以返回 NULL
指针。在调用 RegionBelow
和取消引用 regLo
之间,执行 regLo == NULL
检查。您可以使用 assert
或抛出异常(在 C++ 中)来执行此操作。最有可能的是,如果 RegionBelow
可以在出错时返回 NULL
,那么您可以使用其他一些方法来确定错误是什么以及如何处理它。您必须查阅 RegionBelow
的源代码或文档才能找到该信息。
关于c++ - 为什么 GLU 会在这个地方崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3391187/
我正在使用 GLUTess 来 segmentation 多边形。经过几次测试,我意识到链接到 glu32.dll 的 glu32.lib 偶尔会崩溃。而我从 opengl sdk 获得的 GLU 是
我在使用几个相关数组时发现了一种奇怪的效果。在寻找错误之后,我终于找到了解决方案。但我想知道你们中是否有人可以向我解释为什么会发生这种情况。 我的代码是这样的: var closed =['close
编辑:这是一个库错误。我 reported它到 HOpenGL 邮件列表。 我使用 9 点矩形方法将圆/椭圆表示为 NURBS。 点是p1, p2, ..., p9 , p9 = p1 .它们如图所示
我很难弄清楚 glu 中的坐标系是如何工作的,有几个问题需要解决。 GLJPanel canvas = new GLJPanel(); frame.setSize(400,600); // Size
当我在 Release模式下运行项目时,出现以下错误: 由于找不到 GLU.dll,该应用程序无法启动。 此外,当我在 Debug模式下运行时,它仅在我通过 Visual Studio 运行时才有效,
我正在尝试重新使用 OpenGL,但我的知识和数学现在都生疏了。我曾经使用 C++,但我现在更喜欢 C#...试用 OpenTK。显然,自 GL 3.1 以来,Glu 已被弃用,因此我试图找到一个使用
这是我的难题,我有一张背景图片,上面有一个栏。我使用 适合背景图像 body { background-image: url("foo"); background-size: 10
我发现我的应用程序因空引用异常而崩溃,就在 GLU 源代码的 sweep.c 中: static void ConnectLeftVertex( GLUtesselator *tess, GLUver
我在 Internet 上找不到“官方”GLU 下载或文档的任何链接。 opengl.org 上有关 GLU 的链接已失效。我找到的唯一 GLU API 文档是在 MSDN 上关于 GLU 的 Win
我正在尝试掌握 JOGL(以及一般的 OGL),并从内存中生成了以下代码(除了 reshape() 回调),所以我不认为 OGL 是完美的。然而,我对 GLU 对象以及 gluLookAt() 和 g
好吧。我对 OpenGL 之类的东西还是全新的。我正在使用 LWJGL 3 和 JOGL(用于 GLU),并且我的自学过程完全停止了。现在我正在尝试使用 GLU.gluPerspective(80,
我希望我的受限玻尔兹曼机学习实值数据的新表示(请参阅: Hinton - 2010 - A Practical Guide to Training RBMs )。我正在努力实现高斯线性单位。 对于可见
我是 OpenGL 的新手,不知道如何使用 gluLookAt。以下是我的来源——任何帮助将不胜感激。 public void onSurfaceCreated(GL10 gl, EGLConf
我正在尝试在房间底部绘制一个蓝色四边形。 这是我一直尝试使用的代码,但是没有四边形,只有绿色透明色。 #include #include #include #include #include
尝试使用这个 tutorial在带有 netbeans 和 cygwin 4.8.1 的 64 位 Windows 8 上。 我收到很多这样的错误:/usr/include/w32api/GL/glu
我知道有用于绘制矩形的内置函数(例如 glRecti()),并且认为圆也是一个非常基本的用法。 有没有这种画圆的内置函数?或者我应该总是自己实现它? 最佳答案 gluDisk() can be use
// baseballField glColor3f(0.22, 0.36, 0.20); GLUquadricObj *myobject; myobject = gluNewQuadric(); g
我想在 Linux 系统上使用 C、OpenGL 渲染凹多边形。任何人都可以提供示例代码如何在最新版本的 OpenGL 中完成(假设 OpenGL 4.5,根据 glxinfo NVIDIA 驱动程序
这是我的问题。我正在 segmentation 复杂的、自相交的、具有数百个顶点的多轮廓多边形。 GLU Tesselator 因空指针 0x0000000 问题而崩溃。当我不制作自相交多边形时,它永
所以我想在我的 Android 应用程序中绘制简单的形状(圆柱体、球体和圆锥体)。基于this question and answer ,似乎可以将 GLU 移植到 Android 中,它具有我需要的
我是一名优秀的程序员,十分优秀!