2013-12-21 22:48:54 +00:00
|
|
|
#ifndef OPENGLSHADERPROGRAM_H
|
|
|
|
#define OPENGLSHADERPROGRAM_H
|
|
|
|
|
|
|
|
#include "opengl_global.h"
|
|
|
|
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
class QOpenGLShaderProgram;
|
|
|
|
|
|
|
|
namespace paysages {
|
|
|
|
namespace opengl {
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
class OPENGLSHARED_EXPORT OpenGLShaderProgram {
|
|
|
|
public:
|
|
|
|
OpenGLShaderProgram(const std::string &name, OpenGLRenderer *renderer);
|
2013-12-21 22:48:54 +00:00
|
|
|
~OpenGLShaderProgram();
|
|
|
|
|
|
|
|
void addVertexSource(QString path);
|
|
|
|
void addFragmentSource(QString path);
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
void drawTriangles(float *vertices, int triangle_count);
|
|
|
|
void drawTriangleStrip(float *vertices, int vertex_count);
|
2013-12-21 22:48:54 +00:00
|
|
|
|
2015-12-03 22:04:50 +00:00
|
|
|
bool bind();
|
2013-12-24 10:44:39 +00:00
|
|
|
void release();
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
inline QOpenGLShaderProgram *getProgram() const {
|
|
|
|
return program;
|
|
|
|
}
|
|
|
|
inline OpenGLRenderer *getRenderer() const {
|
|
|
|
return renderer;
|
|
|
|
}
|
2013-12-24 10:44:39 +00:00
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
protected:
|
2013-12-22 14:04:33 +00:00
|
|
|
friend class OpenGLVariable;
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
private:
|
2013-12-22 17:47:24 +00:00
|
|
|
void compile();
|
2013-12-21 22:48:54 +00:00
|
|
|
|
2013-12-22 17:47:24 +00:00
|
|
|
bool compiled;
|
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
OpenGLRenderer *renderer;
|
2013-12-22 14:04:33 +00:00
|
|
|
|
2015-09-14 17:25:54 +00:00
|
|
|
std::string name;
|
2015-11-09 21:30:46 +00:00
|
|
|
QOpenGLShaderProgram *program;
|
|
|
|
OpenGLFunctions *functions;
|
2013-12-22 17:47:24 +00:00
|
|
|
|
|
|
|
std::string source_vertex;
|
|
|
|
std::string source_fragment;
|
2013-12-21 22:48:54 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // OPENGLSHADERPROGRAM_H
|