paysages3d/src/render/opengl/OpenGLShaderProgram.h
Michaël Lemaire e346f07c22 Merge branch 'master' into vegetation
Conflicts:
	src/render/opengl/OpenGLRenderer.cpp
	src/render/opengl/OpenGLRenderer.h
	src/render/opengl/OpenGLShaderProgram.cpp
	src/render/opengl/OpenGLShaderProgram.h
	src/render/opengl/OpenGLSharedState.cpp
2015-12-04 00:04:07 +01:00

63 lines
1.3 KiB
C++

#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);
~OpenGLShaderProgram();
void addVertexSource(QString path);
void addFragmentSource(QString path);
void drawTriangles(float *vertices, int triangle_count);
void drawTriangleStrip(float *vertices, int vertex_count);
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();
bool compiled;
OpenGLRenderer *renderer;
std::string name;
QOpenGLShaderProgram *program;
OpenGLFunctions *functions;
OpenGLSharedState *state;
std::string source_vertex;
std::string source_fragment;
};
}
}
#endif // OPENGLSHADERPROGRAM_H