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

62 lines
1.0 KiB
C
Raw Normal View History

//
// Created by NiTe Luo on 10/31/13.
//
2013-11-12 03:54:08 +08:00
#ifndef __CC_RENDERER_H_
#define __CC_RENDERER_H_
#include "CCPlatformMacros.h"
#include "RenderCommand.h"
#include "CCGLProgram.h"
2013-11-09 04:06:39 +08:00
#include "CCGL.h"
2013-11-12 03:54:08 +08:00
#include <vector>
2013-11-08 07:48:37 +08:00
#define VBO_SIZE 1024
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-09 04:06:39 +08:00
//Draw the previews queued quads and flush previous context
void flush();
protected:
vector<RenderCommand*> _renderQueue;
int _lastMaterialID;
2013-11-08 08:50:53 +08:00
2013-11-11 16:14:29 +08:00
size_t _firstCommand;
size_t _lastCommand;
V3F_C4B_T2F_Quad _quads[VBO_SIZE];
GLushort _indices[6 * VBO_SIZE];
2013-11-08 08:50:53 +08:00
GLuint _VAOname;
GLuint _buffersVBO[2]; //0: vertex 1: indices
2013-11-08 07:48:37 +08:00
int _numQuads;
2013-11-11 16:14:29 +08:00
void drawBatchedQuads();
};
NS_CC_END
2013-11-12 03:54:08 +08:00
#endif //__CC_RENDERER_H_