From: <axl...@us...> - 2008-12-23 19:29:26
|
Revision: 81 http://hgengine.svn.sourceforge.net/hgengine/?rev=81&view=rev Author: axlecrusher Date: 2008-12-23 19:29:21 +0000 (Tue, 23 Dec 2008) Log Message: ----------- make quad use VBO and instacne quads Modified Paths: -------------- Mercury2/src/Quad.cpp Mercury2/src/Quad.h Modified: Mercury2/src/Quad.cpp =================================================================== --- Mercury2/src/Quad.cpp 2008-12-23 19:24:48 UTC (rev 80) +++ Mercury2/src/Quad.cpp 2008-12-23 19:29:21 UTC (rev 81) @@ -5,37 +5,49 @@ #include <GL/gl.h> #include <GL/glext.h> -#include <Texture.h> - REGISTER_ASSET_TYPE(Quad); -void Quad::Render(MercuryNode* node) +Quad::Quad() { - unsigned short numTextures = Texture::NumberActiveTextures(); - unsigned int i; + AllocateIndexSpace(4); + AllocateVertexSpace(4, sizeof(float)*5); - glBegin(GL_QUADS); + float* buffer = (float*)Buffer(); + int i = 0; - for (i=0; i < numTextures; ++i) - glMultiTexCoord2f(GL_TEXTURE0+i, 0, 1); - glVertex3f(-0.5f, -0.5f, 0.0f); + buffer[i++] = -0.5; buffer[i++] = -0.5; buffer[i++] = 0.0; + buffer[i++] = 0; buffer[i++] = 1; - for (i=0; i < numTextures; ++i) - glMultiTexCoord2f(GL_TEXTURE0+i, 1, 1); - glVertex3f( 0.5f, -0.5f, 0.0f); + buffer[i++] = 0.5; buffer[i++] = -0.5; buffer[i++] = 0.0; + buffer[i++] = 1; buffer[i++] = 1; - for (i=0; i < numTextures; ++i) - glMultiTexCoord2f(GL_TEXTURE0+i, 1, 0); - glVertex3f( 0.5f, 0.5f, 0.0f); + buffer[i++] = 0.5; buffer[i++] = 0.5; buffer[i++] = 0.0; + buffer[i++] = 1; buffer[i++] = 0; -// glTexCoord2f(0,1); - for (i=0; i < numTextures; ++i) - glMultiTexCoord2f(GL_TEXTURE0+i, 0, 0); - glVertex3f(-0.5f, 0.5f, 0.0f); + buffer[i++] = -0.5; buffer[i++] = 0.5; buffer[i++] = 0.0; + buffer[i++] = 0; buffer[i++] = 0; + + uint16_t* indice = IndexBuffer(); + indice[0] = 0; + indice[1] = 1; + indice[2] = 2; + indice[3] = 3; +} - glEnd(); +Quad::~Quad() +{ + m_myInstance = NULL; } +Quad* Quad::Generate() +{ + if ( !m_myInstance ) + m_myInstance = new Quad(); + return m_myInstance; +} + +Quad* Quad::m_myInstance = NULL; + /*************************************************************************** * Copyright (C) 2008 by Joshua Allen * * * Modified: Mercury2/src/Quad.h =================================================================== --- Mercury2/src/Quad.h 2008-12-23 19:24:48 UTC (rev 80) +++ Mercury2/src/Quad.h 2008-12-23 19:29:21 UTC (rev 81) @@ -1,9 +1,17 @@ #include <MercuryAsset.h> -class Quad : public MercuryAsset +#include <MercuryVBO.h> + +class Quad : public MercuryVBO { public: - void Render(MercuryNode* node); + Quad(); + ~Quad(); + + static Quad* Generate(); + + private: + static Quad* m_myInstance; }; /*************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |