//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  This file contains the declaration of the CShaderProgramStub        //
//  class.                                                              //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
#ifndef __CSHADERPROGRAMSTUB_HPP__
#define __CSHADERPROGRAMSTUB_HPP__


#include "portable_gl.h"
#include <vector>
#include "CShaderProgram.hpp"


// This class is a concrete CShaderProgram class that implements the
// shader handling behavior with an empty functionnality.  It is used
// mainly for developping on not-shader-enabled platforms.
class CShaderProgramStub : public CShaderProgram
{
public:
  bool addShader(EShaderType shaderType, const std::string& shader);
  bool link();
  void use();
  void unuse();

  void setUniform1f(const std::string& name, float v0);
  void setUniform3f(const std::string& name, float v0, float v1, float v2);

  static bool isSupported();
};


#endif // __CSHADERPROGRAMSTUB_HPP__
