context reinit support

This commit is contained in:
2022-10-13 08:57:27 +03:00
parent 3b0d1ea0e2
commit ce3df7d051
24 changed files with 136 additions and 24 deletions

View File

@@ -53,8 +53,6 @@ Renderer::Renderer(QGLView * view_): RendererBase(view_),
shader_files[srFinalPass ] = "ds_final.glsl";
shader_files[srTonemapPass ] = "ds_tonemap.glsl";
shader_fxaa = 0;
gamma_ = 1.;
edit_mode = need_init_shaders = true;
camera_light_mode = QGLView::clmAuto;
}
@@ -69,6 +67,14 @@ Renderer::~Renderer() {
void Renderer::init(int width, int height) {
fbo_ds.reinit();
fbo_out.reinit();
quad->reinit();
buffer_materials.reinit();
buffer_lights.reinit();
buffer_lights_pos.reinit();
textures_maps.reinit();
textures_empty.reinit();
resize(width, height);
rend_mat.init(width, height);
rend_service.init(width, height);
@@ -77,6 +83,7 @@ void Renderer::init(int width, int height) {
initQuad(quad);
initTextureArrays();
initCoeffTextures();
markReloadTextures();
tex_env.init();
need_init_shaders = true;
}
@@ -94,6 +101,12 @@ void Renderer::resize(int width, int height) {
void Renderer::reloadShaders() {
QMapIterator<ShaderRole, QString> it(shader_files);
qDeleteAll(shaders.values());
shaders.clear();
if (shader_fxaa) delete shader_fxaa;
shader_fxaa = nullptr;
if (tone_proc.shader_sum) delete tone_proc.shader_sum;
tone_proc.shader_sum = nullptr;
QString dir = ":shaders/";
while (it.hasNext()) {
it.next();
@@ -343,6 +356,7 @@ void Renderer::renderScene() {
renderQuad(prog, quad);
} else
fbo_out.blit(obrSum, fbo_out.id(), obrTonemap, fbo_out.rect(), fbo_out.rect());
//glClearFramebuffer(Qt::red, false);
fbo_out.release();
/// apply hovers and selection frame