@@ -368,33 +368,32 @@ namespace Core::Graphics
368368 bool SwapChain_OpenGL::present ()
369369 {
370370 Vector2U wsize = m_window->getSize ();
371- Core:: Vector2F scale_dim = Core:: Vector2F ((float ) wsize.x / m_canvas_size.x , (float ) wsize.y / m_canvas_size.y );
371+ Vector2F scale_dim = Vector2F ((float ) wsize.x / m_canvas_size.x , (float ) wsize.y / m_canvas_size.y );
372372 float scale = std::min (scale_dim.x , scale_dim.y );
373373 Vector2F d;
374374
375375 if (scale_dim.x > scale_dim.y )
376376 {
377- d.x = (wsize.x - scale * m_canvas_size.x ) / 2 ;
377+ d.x = (( float ) wsize.x - m_canvas_size.x * scale) * 0.5 ;
378378 d.y = 0 ;
379379 }
380380 else
381381 {
382382 d.x = 0 ;
383- d.y = (wsize.y - scale * m_canvas_size.y ) / 2 ;
383+ d.y = (( float ) wsize.y - m_canvas_size.y * scale) * 0.5 ;
384384 }
385385
386386 glBindFramebuffer (GL_READ_FRAMEBUFFER, rdr_fbo);
387387 glBindFramebuffer (GL_DRAW_FRAMEBUFFER, 0 );
388+ glViewport (0 , 0 , wsize.x , wsize.y );
389+ glScissor (0 , 0 , wsize.x , wsize.y );
388390 glClearColor (0 .f , 0 .f , 0 .f , 0 .f );
389391 glClearDepth (1 .f );
390392 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
391- glViewport (0 , 0 , wsize.x , wsize.y );
392- glScissor (0 , 0 , wsize.x , wsize.y );
393393
394394 glBlitFramebuffer (
395395 0 , 0 , m_canvas_size.x , m_canvas_size.y ,
396- (wsize.x - scale * (m_canvas_size.x + d.x )) / 2 , (wsize.y + scale * (m_canvas_size.y + d.y )) / 2 ,
397- (wsize.x + scale * (m_canvas_size.x + d.x )) / 2 , (wsize.y - scale * (m_canvas_size.y + d.y )) / 2 ,
396+ d.x , scale * m_canvas_size.y + d.y , scale * m_canvas_size.x + d.x , d.y ,
398397 GL_COLOR_BUFFER_BIT, GL_LINEAR
399398 );
400399
0 commit comments