From 3e34cfb96b1d094655ac8d8a9ead4d05ea62325c Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sun, 7 Jun 2009 16:46:25 +0100 Subject: [PATCH] Use vertex arrays for small meshes --- include/IMesh.hpp | 2 ++ src/Mesh.cpp | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/IMesh.hpp b/include/IMesh.hpp index 1dbe06c..2ccd0ab 100644 --- a/include/IMesh.hpp +++ b/include/IMesh.hpp @@ -43,6 +43,8 @@ struct IMeshBuffer { typedef unsigned Index; virtual ~IMeshBuffer() {} + + virtual size_t vertexCount() const = 0; virtual void add(const Vertex& aVertex, const Normal& aNormal) = 0; virtual void add(const Vertex& aVertex, const Normal& aNormal, diff --git a/src/Mesh.cpp b/src/Mesh.cpp index e8798cd..97e832c 100644 --- a/src/Mesh.cpp +++ b/src/Mesh.cpp @@ -36,6 +36,8 @@ struct MeshBuffer : IMeshBuffer { MeshBuffer(); ~MeshBuffer() {} + size_t vertexCount() const { return vertices.size(); } + void add(const Vertex& aVertex, const Normal& aNormal); void add(const Vertex& aVertex, const Normal& aNormal, const TexCoord& aTexCoord); @@ -549,10 +551,10 @@ IMeshPtr makeMesh(IMeshBufferPtr aBuffer) { static bool havePrintedMeshChoice = false; - //aBuffer->printStats(); + aBuffer->printStats(); - // Prefer VBO meshes - if (GLEW_ARB_vertex_buffer_object) { + // Prefer VBOs for large meshes meshes + if (aBuffer->vertexCount() > 100 && GLEW_ARB_vertex_buffer_object) { if (!havePrintedMeshChoice) { log() << "Using VBO mesh implementation"; havePrintedMeshChoice = true; -- 2.39.2