From f0069ce51a4ccaa20915574a77147ea8e5543882 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sun, 21 Sep 2008 17:13:53 +0000 Subject: [PATCH] fix vc++ crash in drawArrays --- Graphics/Mesh.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp index f085d750e0..fa730a958e 100644 --- a/Graphics/Mesh.cpp +++ b/Graphics/Mesh.cpp @@ -503,7 +503,7 @@ static void addElementsInArrays(GEntity *e, std::vector<T*> &elements, static void drawArrays(GEntity *e, VertexArray *va, GLint type, bool useNormalArray, int forceColor=0, unsigned int color=0) { - if(!va) return; + if(!va || !va->getNumVertices()) return; // If we want to be enable picking of individual elements we need to // draw each one separately @@ -524,13 +524,11 @@ static void drawArrays(GEntity *e, VertexArray *va, GLint type, bool useNormalAr } glVertexPointer(3, GL_FLOAT, 0, va->getVertexArray()); - glNormalPointer(GL_BYTE, 0, va->getNormalArray()); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, va->getColorArray()); - glEnableClientState(GL_VERTEX_ARRAY); if(useNormalArray){ glEnable(GL_LIGHTING); + glNormalPointer(GL_BYTE, 0, va->getNormalArray()); glEnableClientState(GL_NORMAL_ARRAY); } else @@ -543,6 +541,7 @@ static void drawArrays(GEntity *e, VertexArray *va, GLint type, bool useNormalAr else if(CTX.pick_elements || (!e->getSelection() && (CTX.mesh.color_carousel == 0 || CTX.mesh.color_carousel == 3))){ + glColorPointer(4, GL_UNSIGNED_BYTE, 0, va->getColorArray()); glEnableClientState(GL_COLOR_ARRAY); } else{ -- GitLab