paysages3d/src/render/opengl/OpenGLShaderProgram.h

51 lines
1 KiB
C
Raw Normal View History

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 {
class OPENGLSHARED_EXPORT OpenGLShaderProgram
{
public:
OpenGLShaderProgram(QString name, OpenGLRenderer* renderer);
2013-12-21 22:48:54 +00:00
~OpenGLShaderProgram();
void addVertexSource(QString path);
void addFragmentSource(QString path);
void drawTriangles(float* vertices, int triangle_count);
void drawTriangleStrip(float* vertices, int vertex_count);
protected:
inline QOpenGLShaderProgram* getProgram() const {return program;}
2013-12-22 17:05:11 +00:00
inline OpenGLRenderer* getRenderer() const {return renderer;}
friend class OpenGLVariable;
2013-12-21 22:48:54 +00:00
private:
void compile();
2013-12-21 22:48:54 +00:00
void bind();
void release();
bool compiled;
OpenGLRenderer* renderer;
2013-12-21 22:48:54 +00:00
QString name;
QOpenGLShaderProgram* program;
2013-12-23 09:26:29 +00:00
OpenGLFunctions* functions;
std::string source_vertex;
std::string source_fragment;
2013-12-21 22:48:54 +00:00
};
}
}
#endif // OPENGLSHADERPROGRAM_H