axmol/cocos/2d/renderer/Renderer.h

58 lines
942 B
C
Raw Normal View History

//
// Created by NiTe Luo on 10/31/13.
//
#ifndef __CCRENDERER_H_
#define __CCRENDERER_H_
#include "CCPlatformMacros.h"
#include "CCEGLView.h"
#include "RenderCommand.h"
#include "CCGLProgram.h"
2013-11-08 07:48:37 +08:00
#include "QuadCommand.h"
2013-11-08 08:50:53 +08:00
#define VBO_SIZE 64
NS_CC_BEGIN
using namespace std;
2013-11-08 08:50:53 +08:00
class Renderer : public Object
{
public:
static Renderer* getInstance();
2013-11-08 08:50:53 +08:00
static void destroyInstance();
//TODO support multiple viewport
2013-11-08 07:48:37 +08:00
void addRenderCommand(RenderCommand* command);
void render();
protected:
Renderer();
2013-11-08 07:48:37 +08:00
~Renderer();
2013-11-08 08:50:53 +08:00
bool init();
void setupIndices();
void setupVBOAndVAO();
2013-11-08 07:48:37 +08:00
void batchQuads(QuadCommand* cmd);
void drawQuads();
protected:
vector<RenderCommand*> _renderQueue;
int _lastMaterialID;
2013-11-08 08:50:53 +08:00
V3F_C4B_T2F_Quad*_quads;
GLushort* _indices;
GLuint _VAOname;
GLuint _buffersVBO[2]; //0: vertex 1: indices
2013-11-08 07:48:37 +08:00
int _numQuads;
};
NS_CC_END
#endif //__CCRENDERER_H_