/* QGL RendererBase Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef RENDERER_BASE_H #define RENDERER_BASE_H #include "glbuffer.h" #include "glshaders_types.h" #include "gltexturearray.h" class RendererBase { public: RendererBase(QGLView * view_); ~RendererBase(); protected: void initTextureArrays(); void initUniformBuffer(QOpenGLShaderProgram * prog, Buffer * buffer, int bind_point, const char * blockName); void setUniformHalo(QOpenGLShaderProgram * prog, const char * type, QColor color, float fill); void setUniformMaps(QOpenGLShaderProgram * prog); void setUniformCamera(QOpenGLShaderProgram * prog, Camera * cam, bool matrices = true, QSize viewport = QSize()); void setUniformViewCorners(QOpenGLShaderProgram * prog, Camera * cam, QSize viewport = QSize()); void fillSelectionsBuffer(QVector & buffer, const ObjectBaseList & ol); void fillSelectionsBuffer(QVector & buffer, bool yes, int size); void reloadMaterials(Scene & scene); void reloadLightsParameters(const QMap> & lights); void reloadLightsPositions(Camera * cam); void markReloadTextures(); void setMapsSize(QSize sz); void initQuad(Mesh * mesh, QMatrix4x4 mat = QMatrix4x4()); void renderQuad(QOpenGLShaderProgram * prog, Mesh * mesh, Camera * cam = 0, bool uniforms = true); void initCoeffTextures(); void createCoeffTexture(GLuint & id, const void * data, int size, int channels = 1); QGLView * view; TextureManager * textures_manager; QVector cur_objects_; QVector cur_materials_; QVector cur_lights_params_; QVector cur_lights_pos_; Buffer buffer_materials; Buffer buffer_lights, buffer_lights_pos; Texture2DArray textures_empty, textures_maps; QSize maps_size; uint maps_hash; GLuint tex_coeff[2]; QMap lights_start; QList current_lights; }; #endif // RENDERER_BASE_H