1eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#pragma once
2eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
3eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include <EGL/egl.h>
4eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include <GLES2/gl2.h>
5eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include <GLES2/gl2ext.h>
6eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
7eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalextern bool checkGlError(const char* op);
8eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
9eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalclass FrameBuffer {
10eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal  public:
11eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    FrameBuffer();
12eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    virtual ~FrameBuffer();
13eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
14eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    bool InitializeGLContext();
15eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    bool Init(int width, int height, GLenum format);
16eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    GLuint GetTextureName() const;
17eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    GLuint GetFrameBufferName() const;
18eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    GLenum GetFormat() const;
19eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
20eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    int GetWidth() const;
21eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    int GetHeight() const;
22eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal
23eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal private:
24eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    void Reset();
25eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    bool CreateBuffers();
26eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    GLuint mFrameBufferName;
27eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    GLuint mTextureName;
28eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    int mWidth;
29eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    int mHeight;
30eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal    GLenum mFormat;
31eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal};
32