paysages3d/src/render/opengl/OpenGLShaderProgram.h

63 lines
1.3 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(const std::string &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);
2013-12-21 22:48:54 +00:00
void drawTrianglesUV(float *vertices, float *uv, int triangle_count);
void drawTriangleStripUV(float *vertices, float *uv, int vertex_count);
bool bind();
void release();
inline QOpenGLShaderProgram *getProgram() const {
return program;
}
inline OpenGLRenderer *getRenderer() const {
return renderer;
}
inline OpenGLSharedState *getState() const {
return state;
}
protected:
friend class OpenGLVariable;
private:
void compile();
2013-12-21 22:48:54 +00:00
bool compiled;
OpenGLRenderer *renderer;
2015-09-14 17:25:54 +00:00
std::string name;
QOpenGLShaderProgram *program;
OpenGLFunctions *functions;
OpenGLSharedState *state;
std::string source_vertex;
std::string source_fragment;
2013-12-21 22:48:54 +00:00
};
}
}
#endif // OPENGLSHADERPROGRAM_H