From b752a3a689ea2000398c9f93e801d87a2681223c Mon Sep 17 00:00:00 2001 From: prep Date: Thu, 5 Apr 2012 11:08:31 -0400 Subject: Navmesh edges are now rendered via vertex buffers. Enjoy the speedup! --- indra/llrender/llrendernavprim.cpp | 6 ++ indra/llrender/llrendernavprim.h | 120 +++++++++++++++++++------------------ 2 files changed, 67 insertions(+), 59 deletions(-) diff --git a/indra/llrender/llrendernavprim.cpp b/indra/llrender/llrendernavprim.cpp index 56b176d39c..2632428dfd 100644 --- a/indra/llrender/llrendernavprim.cpp +++ b/indra/llrender/llrendernavprim.cpp @@ -81,6 +81,12 @@ void LLRenderNavPrim::renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt ) pVBO->drawArrays( LLRender::TRIANGLES, 0, vertCnt ); } //============================================================================= +void LLRenderNavPrim::renderNavMeshEdgeVB( LLVertexBuffer* pVBO, int vertCnt ) +{ + pVBO->setBuffer( LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_NORMAL ); + pVBO->drawArrays( LLRender::LINES, 0, vertCnt ); +} +//============================================================================= void LLRenderNavPrim::renderStar( const LLVector3& center, const float scale, const LLColor4U& color ) const { for (int k=0; k<3; k++) diff --git a/indra/llrender/llrendernavprim.h b/indra/llrender/llrendernavprim.h index 7fbd02de93..809debb006 100644 --- a/indra/llrender/llrendernavprim.h +++ b/indra/llrender/llrendernavprim.h @@ -1,59 +1,61 @@ -/** - * @file LLRenderNavPrim.h - * @brief - * - * $LicenseInfo:firstyear=2001&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_RENDER_NAVPRIM_H -#define LL_RENDER_NAVPRIM_H - -#include "llmath.h" -#include "v3math.h" -#include "v4math.h" -#include "m3math.h" -#include "m4math.h" -#include "v4color.h" -#include "llgl.h" - - -class LLRenderNavPrim -{ -public: - //Draw a line - void renderLLSegment( const LLVector3& start, const LLVector3& end, const LLColor4U& color ) const; - //Draw simple tri - void renderTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, int color ) const; - //Draw simple tri - void renderLLTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, const LLColor4U& color, const LLVector3& n ) const; - //Draw the contents of vertex buffer - void renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt ); - //Draw a star - void renderStar( const LLVector3& center, const float scale, const LLColor4U& color ) const; - //Flush the device - void flushDevice() { gGL.flush(); } -private: -}; - -extern LLRenderNavPrim gRenderNav; - -#endif +/** + * @file LLRenderNavPrim.h + * @brief + * + * $LicenseInfo:firstyear=2001&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_RENDER_NAVPRIM_H +#define LL_RENDER_NAVPRIM_H + +#include "llmath.h" +#include "v3math.h" +#include "v4math.h" +#include "m3math.h" +#include "m4math.h" +#include "v4color.h" +#include "llgl.h" + + +class LLRenderNavPrim +{ +public: + //Draw a line + void renderLLSegment( const LLVector3& start, const LLVector3& end, const LLColor4U& color ) const; + //Draw simple tri + void renderTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, int color ) const; + //Draw simple tri + void renderLLTri( const LLVector3& a, const LLVector3& b, const LLVector3& c, const LLColor4U& color, const LLVector3& n ) const; + //Draw the contents of vertex buffer + void renderNavMeshVB( LLVertexBuffer* pVBO, int vertCnt ); + //Draw the contents of the edge vertex buffer + void renderNavMeshEdgeVB( LLVertexBuffer* pVBO, int vertCnt ); + //Draw a star + void renderStar( const LLVector3& center, const float scale, const LLColor4U& color ) const; + //Flush the device + void flushDevice() { gGL.flush(); } +private: +}; + +extern LLRenderNavPrim gRenderNav; + +#endif -- cgit v1.2.3