2017-01-03 14:57:46 +00:00
|
|
|
#pragma once
|
2017-01-07 15:46:51 +00:00
|
|
|
#include <map>
|
2017-01-07 09:40:50 +00:00
|
|
|
#include <vector>
|
2017-01-03 14:57:46 +00:00
|
|
|
#include "CombinerKey.h"
|
|
|
|
|
|
|
|
namespace graphics {
|
|
|
|
|
|
|
|
class CombinerProgram
|
|
|
|
{
|
|
|
|
public:
|
2017-01-07 09:40:50 +00:00
|
|
|
virtual ~CombinerProgram() {}
|
2017-01-03 14:57:46 +00:00
|
|
|
virtual void activate() = 0;
|
|
|
|
virtual void update(bool _force) = 0;
|
|
|
|
virtual CombinerKey getKey() const = 0;
|
2017-01-05 11:05:47 +00:00
|
|
|
virtual bool usesTexture() const = 0;
|
|
|
|
virtual bool usesTile(u32 _t) const = 0;
|
|
|
|
virtual bool usesShade() const = 0;
|
|
|
|
virtual bool usesLOD() const = 0;
|
|
|
|
|
|
|
|
// TODO implement
|
|
|
|
void disableBlending() {}
|
|
|
|
void updateFrameBufferInfo(bool _bForce = false) {}
|
|
|
|
|
2017-01-07 15:46:51 +00:00
|
|
|
virtual bool getBinaryForm(std::vector<char> & _buffer) = 0;
|
2017-01-07 09:40:50 +00:00
|
|
|
|
|
|
|
static void getShaderCombinerOptionsSet(std::vector<u32> & _vecOptions);
|
2017-01-03 14:57:46 +00:00
|
|
|
};
|
|
|
|
|
2017-01-07 15:46:51 +00:00
|
|
|
typedef std::map<CombinerKey, graphics::CombinerProgram *> Combiners;
|
|
|
|
|
2017-01-03 14:57:46 +00:00
|
|
|
}
|