#ifndef DUST3D_APPLICATION_MODEL_OPENGL_PROGRAM_H_ #define DUST3D_APPLICATION_MODEL_OPENGL_PROGRAM_H_ #include #include #include #include class ModelOpenGLProgram: public QOpenGLShaderProgram { public: void load(bool isCoreProfile=false); int getUniformLocationByName(const std::string &name); bool isCoreProfile() const; void bindEnvironment(); private: void addShaderFromResource(QOpenGLShader::ShaderType type, const char *resourceName); bool m_isLoaded = false; bool m_isCoreProfile = false; std::map m_uniformLocationMap; std::unique_ptr m_environmentIrradianceMap; std::unique_ptr m_environmentSpecularMap; std::unique_ptr>> m_environmentIrradianceMaps; std::unique_ptr>> m_environmentSpecularMaps; }; #endif