ffgl-core 0.2.6

FFGL plugin framework
Documentation
#ifndef FFGLShader_H
#define FFGLShader_H

#include <FFGL.h>
#include <FFGLExtensions.h>

class FFGLShader
{
public:
  FFGLShader();
  virtual ~FFGLShader();

  void SetExtensions(FFGLExtensions *e);
  
  int IsReady() { return (m_glProgram!=0 && m_glVertexShader!=0 && m_glFragmentShader!=0 && m_linkStatus==1); }
  
  int Compile(const char *vtxProgram, const char *fragProgram);

  GLuint FindUniform(const char *name);
  
  int BindShader();
  int UnbindShader();

  void FreeGLResources();

private:
  FFGLExtensions *m_extensions;
#ifdef __APPLE__
    void * m_glProgram;
    void * m_glVertexShader;
    void * m_glFragmentShader;
    GLuint m_linkStatus;
#else
    GLenum m_glProgram;
    GLenum m_glVertexShader;
    GLenum m_glFragmentShader;
    GLuint m_linkStatus;
#endif
  
  void CreateGLResources();
};

#endif