|
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.
|