Here we go!
Its the birth of a render class, very incredibly simple, only sends a quad to the renderer and then, renders it.
Renderer.h
#include <vector>
#include "Vector3.h"
using namespace std;
struct BasicQuad
{
Vector3 P1, P2, P3, P4;
int Texture;//Index into gpTextureManager
};
std::vector<BasicQuad*> mBasicQuads;
class GLRenderer
{
public:
GLRenderer()
{
}
void AddBasicQuadToRenderer(float P1X,float P1Y,float P1Z,
float P2X,float P2Y,float P2Z,
float P3X,float P3Y,float P3Z,
float P4X,float P4Y,float P4Z,
int Texture)
{
BasicQuad *pData = new BasicQuad;
pData->P1 = Vector3(P1X,P1Y,P1Z);
pData->P2 = Vector3(P2X,P2Y,P2Z);
pData->P3 = Vector3(P3X,P3Y,P3Z);
pData->P4 = Vector3(P4X,P4Y,P4Z);
pData->Texture = Texture;
mBasicQuads.push_back(pData);
}
void RenderBasicQuads();
};
Renderer.cpp
#include <windows.h>
#include <gl\gl.h> // Header File For The OpenGL32 Library
#include <gl\glu.h> // Header File For The GLu32 Library
#include <gl\glaux.h> // Header File For The Glaux Library
#include "Renderer.h"
void GLRenderer::RenderBasicQuads()
{
if(!mBasicQuads.size())
return;
glDisable(GL_LIGHTING);
glDisable(GL_BLEND);
BasicQuad * pTemp;
std::vector<BasicQuad*>::iterator ptr;
for(ptr = mBasicQuads.begin(); ptr != mBasicQuads.end(); ptr++)
{
pTemp = *ptr;
glBegin(GL_QUADS);//Cannot be brought out of loop due to bindtexture call
glVertex3f(pTemp->P1.x,pTemp->P1.y,pTemp->P1.z);
glVertex3f(pTemp->P2.x,pTemp->P2.y,pTemp->P2.z);
glVertex3f(pTemp->P3.x,pTemp->P3.y,pTemp->P3.z);
glVertex3f(pTemp->P4.x,pTemp->P4.y,pTemp->P4.z);
glEnd();
}
delete pTemp;
}
and my lil vector3 class, proves very useful :d
Vector3.h
class Vector3
{
public:
float x, y, z;
Vector3()
{
}
Vector3(float x, float y, float z);
// And so on
};
Any comments? suggestions? etc?
----------------------------------------------------------Rating me down will only make me stronger.----------------------------------------------------------