diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index f139868b92..674d625c33 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -1815,6 +1815,9 @@ reset() { _glGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv; _glGenerateMipmap = glGenerateMipmap; #else + // Make sure this is properly initialized. + _glGenerateMipmap = NULL; + //TODO: add ARB/3.0 version _supports_framebuffer_object = false; diff --git a/panda/src/parametrics/nurbsCurveEvaluator.cxx b/panda/src/parametrics/nurbsCurveEvaluator.cxx index 4e4cb4d3a0..62af13e595 100644 --- a/panda/src/parametrics/nurbsCurveEvaluator.cxx +++ b/panda/src/parametrics/nurbsCurveEvaluator.cxx @@ -244,8 +244,13 @@ get_vertices(NurbsCurveEvaluator::Vert3Array &verts, const NodePath &rel_to) con int vi; for (vi = 0; vi < num_vertices; vi++) { LVecBase4 vertex = get_vertex(vi, rel_to); - LPoint3 v3(vertex[0] / vertex[3], vertex[1] / vertex[3], vertex[2] / vertex[3]); - verts.push_back(v3); + // Avoid division by zero + if (vertex[3] == 0.0) { + verts.push_back(LPoint3(vertex[0], vertex[1], vertex[2])); + } else { + LPoint3 v3(vertex[0] / vertex[3], vertex[1] / vertex[3], vertex[2] / vertex[3]); + verts.push_back(v3); + } } } diff --git a/panda/src/parametrics/nurbsVertex.I b/panda/src/parametrics/nurbsVertex.I index 8370cf20f3..a054d7623a 100644 --- a/panda/src/parametrics/nurbsVertex.I +++ b/panda/src/parametrics/nurbsVertex.I @@ -20,6 +20,7 @@ //////////////////////////////////////////////////////////////////// INLINE NurbsVertex:: NurbsVertex() { + _vertex.set(0, 0, 0, 1); } ////////////////////////////////////////////////////////////////////