paysages3d/src/render/opengl/OpenGLShaderProgram.h

47 lines
985 B
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;
class QOpenGLFunctions_3_2_Core;
2013-12-21 22:48:54 +00:00
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 compile();
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 bind();
void release();
OpenGLRenderer* renderer;
2013-12-21 22:48:54 +00:00
QString name;
QOpenGLShaderProgram* program;
QOpenGLFunctions_3_2_Core* functions;
2013-12-21 22:48:54 +00:00
};
}
}
#endif // OPENGLSHADERPROGRAM_H