// CFTTShaderProgram - [2020-04-13 11:57:46]
#ifndef _CFTTSHADERPROGRAM_H_
#define _CFTTSHADERPROGRAM_H_

#include "CFTTUberShaderBlendMode.h"

/*
0020B924 0020B924 CFTTShaderProgram::CFTTShaderProgram(CFTTUberShader const*)
0020B938 0020B938 CFTTShaderProgram::~CFTTShaderProgram()
0020B93A 0020B93A CFTTShaderProgram::~CFTTShaderProgram()

00328034 `vtable for'CFTTShaderProgramOGLES
 CFTTShaderProgram::~CFTTShaderProgram()
 CFTTShaderProgram::~CFTTShaderProgram()
 CFTTShaderProgram::EnsureCreated()
 CFTTShaderProgram::Apply(uchar const*,
                          uchar const*,
                          EFTTCullMode,
                          CFTTUberShaderBlendMode const*)

*/

class CFTTUberShader;

enum EFTTCullMode {
  EFTTCullMode_0,
  EFTTCullMode_1,
  EFTTCullMode_2,
  EFTTCullMode_3,
  EFTTCullMode_4
};

//-------------------------------------------------------------------------------------------------
class CFTTShaderProgram {
public:
  CFTTShaderProgram(CFTTUberShader const* pShader);  // 0020B924
  virtual ~CFTTShaderProgram();                      // 0020B938 0020B93A
  virtual bool EnsureCreated() = 0;
  virtual void Apply(uchar const* pDa1,
                     uchar const* pDa2,
                     EFTTCullMode eMode,
                     CFTTUberShaderBlendMode const* pShaderBlendMode) = 0;

  CFTTUberShader* pShader_4;
};
//-------------------------------------------------------------------------------------------------

#endif  //_CFTTSHADERPROGRAM_H_