From 3d434834979a2dae98f63d2dbcdc80c920e91155 Mon Sep 17 00:00:00 2001 From: cnr-isti-vclab Date: Wed, 29 Oct 2008 13:04:11 +0000 Subject: [PATCH] one more fix gcc 4.0.1 issue in wrap/gl/math --- wrap/gl/math.h | 16 +++++++++++----- wrap/gl/space.h | 16 ++++------------ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/wrap/gl/math.h b/wrap/gl/math.h index 5fef8b58..a1503684 100644 --- a/wrap/gl/math.h +++ b/wrap/gl/math.h @@ -74,8 +74,11 @@ Revision 1.1 2004/03/31 15:27:17 ponchio namespace vcg { -inline void glLoadMatrix(const Eigen::Matrix& matrix) { glLoadMatrixf(matrix.data()); } -inline void glLoadMatrix(const Eigen::Matrix& matrix) { +template +inline void glLoadMatrix(const Eigen::Matrix& matrix) { assert(0); } + +template<> inline void glLoadMatrix(const Eigen::Matrix& matrix) { glLoadMatrixf(matrix.data()); } +template<> inline void glLoadMatrix(const Eigen::Matrix& matrix) { Eigen::Matrix4f tmp(matrix); glLoadMatrixf(tmp.data()); } @@ -88,13 +91,16 @@ template inline void glLoadMatrix(const Eigen::Transform& t) { glLoadMatrix(t.matrix()); } -inline void glMultMatrix(const Eigen::Matrix& matrix) { glMultMatrixf(matrix.data()); } +template +inline void glMultMatrix(const Eigen::Matrix& matrix) { assert(0); } + +template<> inline void glMultMatrix(const Eigen::Matrix& matrix) { glMultMatrixf(matrix.data()); } inline void glMultMatrix(const Eigen::Matrix& matrix) { Eigen::Matrix tmp(matrix); glMultMatrixf(tmp.data()); } -inline void glMultMatrix(const Eigen::Matrix& matrix) { glMultMatrixd(matrix.data()); } -inline void glMultMatrix(const Eigen::Matrix& matrix) { +template<> inline void glMultMatrix(const Eigen::Matrix& matrix) { glMultMatrixd(matrix.data()); } +template<> inline void glMultMatrix(const Eigen::Matrix& matrix) { Eigen::Matrix tmp(matrix); glMultMatrixd(tmp.data()); } diff --git a/wrap/gl/space.h b/wrap/gl/space.h index c0620747..d65064f1 100644 --- a/wrap/gl/space.h +++ b/wrap/gl/space.h @@ -123,10 +123,10 @@ _WRAP_EIGEN_XPR(glScale) template<> inline void glScale(const Eigen::Matrix & p){ glScaled(p[0],p[1],1.0);} template inline void glVertex(const Eigen::Matrix & p) { assert(0); } - inline void glVertex(const Eigen::Matrix & p) { glVertex3iv((const GLint*)p.data());} - inline void glVertex(const Eigen::Matrix & p) { glVertex3sv(p.data());} - inline void glVertex(const Eigen::Matrix & p) { glVertex3fv(p.data());} - inline void glVertex(const Eigen::Matrix & p){ glVertex3dv(p.data());} + template<> inline void glVertex(const Eigen::Matrix & p) { glVertex3iv((const GLint*)p.data());} + template<> inline void glVertex(const Eigen::Matrix & p) { glVertex3sv(p.data());} + template<> inline void glVertex(const Eigen::Matrix & p) { glVertex3fv(p.data());} + template<> inline void glVertex(const Eigen::Matrix & p){ glVertex3dv(p.data());} template inline void glNormal(const Eigen::Matrix & p) { assert(0); } template<> inline void glNormal(const Eigen::Matrix & p) { glNormal3iv((const GLint*)p.data());} @@ -320,14 +320,6 @@ template glTriangle3(Triangle3(c.P(1),c.P(0),c.P(3))); } -#ifdef VCG_USE_EIGEN - - - - - -#endif - }//namespace #endif