1eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#pragma once 2eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 3eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include "FrameBuffer.h" 41e762b1f935c9d4a06af6dd56121590ca81d48b1mbansal#include "Renderer.h" 5eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 6eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include <GLES2/gl2.h> 7eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 8eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include <stdint.h> 9eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include <stdio.h> 10eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal#include <stdlib.h> 11eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 121e762b1f935c9d4a06af6dd56121590ca81d48b1mbansalclass WarpRenderer: public Renderer { 13eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal public: 14eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal WarpRenderer(); 15eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal virtual ~WarpRenderer(); 16eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 17eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal // Initialize OpenGL resources 18eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal // @return true if successful 19eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal bool InitializeGLProgram(); 20eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 21eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal void SetViewportMatrix(int w, int h, int W, int H); 22eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal void SetScalingMatrix(float xscale, float yscale); 23eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 241e762b1f935c9d4a06af6dd56121590ca81d48b1mbansal bool DrawTexture(GLfloat *affine); 25eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 26eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal private: 27eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal // Source code for shaders. 281e762b1f935c9d4a06af6dd56121590ca81d48b1mbansal const char* VertexShaderSource() const; 291e762b1f935c9d4a06af6dd56121590ca81d48b1mbansal const char* FragmentShaderSource() const; 30eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 31eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLuint mTexHandle; // Handle to s_texture. 32eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLuint mTexCoordHandle; // Handle to a_texCoord. 33eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLuint mTriangleVerticesHandle; // Handle to vPosition. 34eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 35eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal // Attribute locations 36eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLint mPositionLoc; 37eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLint mAffinetransLoc; 38eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLint mViewporttransLoc; 39eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLint mScalingtransLoc; 40eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLint mTexCoordLoc; 41eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 42eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLfloat mViewportMatrix[16]; 43eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLfloat mScalingMatrix[16]; 44eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 45eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal // Sampler location 46eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal GLint mSamplerLoc; 47eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal}; 48eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 49