#pragma once #include "GLExtensions.h" #include class SimpleMotionRenderer { public: SimpleMotionRenderer() = default; bool InitializeGl(unsigned width, unsigned height); void RenderFrame(uint64_t frameIndex); void RenderTexture(GLuint texture); void ShutdownGl(); unsigned Width() const { return mWidth; } unsigned Height() const { return mHeight; } private: bool EnsureTextureProgram(); void DestroyTextureProgram(); static bool CompileShader(GLenum shaderType, const char* source, GLuint& shader); unsigned mWidth = 0; unsigned mHeight = 0; GLuint mTextureProgram = 0; GLuint mTextureVertexShader = 0; GLuint mTextureFragmentShader = 0; GLuint mTextureVertexArray = 0; };