| #pragma once |
| |
| #include "FrameBuffer.h" |
| |
| #include <GLES2/gl2.h> |
| |
| #include <stdint.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| class Renderer { |
| public: |
| Renderer(); |
| virtual ~Renderer(); |
| |
| // Initialize OpenGL resources |
| // @return true if successful |
| virtual bool InitializeGLProgram() = 0; |
| |
| bool SetupGraphics(FrameBuffer* buffer); |
| bool SetupGraphics(int width, int height); |
| |
| bool Clear(float r, float g, float b, float a); |
| |
| int GetTextureName(); |
| void SetInputTextureName(GLuint textureName); |
| void SetInputTextureDimensions(int width, int height); |
| void SetInputTextureType(GLenum textureType); |
| |
| void InitializeGLContext(); |
| |
| protected: |
| |
| GLuint loadShader(GLenum shaderType, const char* pSource); |
| GLuint createProgram(const char*, const char* ); |
| |
| int SurfaceWidth() const { return mSurfaceWidth; } |
| int SurfaceHeight() const { return mSurfaceHeight; } |
| |
| // Source code for shaders. |
| virtual const char* VertexShaderSource() const = 0; |
| virtual const char* FragmentShaderSource() const = 0; |
| |
| // Redefine this to use special texture types such as |
| // GL_TEXTURE_EXTERNAL_OES. |
| GLenum InputTextureType() const { return mInputTextureType; } |
| |
| GLuint mGlProgram; |
| GLuint mInputTextureName; |
| GLenum mInputTextureType; |
| int mInputTextureWidth; |
| int mInputTextureHeight; |
| |
| // Attribute locations |
| GLint mScalingtransLoc; |
| GLint maPositionHandle; |
| GLint maTextureHandle; |
| |
| |
| int mSurfaceWidth; // Width of target surface. |
| int mSurfaceHeight; // Height of target surface. |
| |
| FrameBuffer *mFrameBuffer; |
| }; |
| |