| 603 | } |
| 604 | |
| 605 | void MenuDrawerGL::DrawLoading( const float progress ) |
| 606 | { |
| 607 | const float progress_corrected= std::min( std::max( progress, 0.0f ), 1.0f ); |
| 608 | |
| 609 | Vertex vertices[ 8u ]; |
| 610 | |
| 611 | const int scale= int( menu_scale_ ); |
| 612 | const int x0= ( int(viewport_size_.Width ()) - int(loading_texture_.Width()) * scale ) / 2; |
| 613 | const int mid_tc= int( std::round( float(loading_texture_.Width()) * progress_corrected ) ); |
| 614 | const int x1= x0 + scale * mid_tc; |
| 615 | const int y= ( int(viewport_size_.Height()) - int(loading_texture_.Height()) / 2 * scale ) / 2; |
| 616 | |
| 617 | vertices[0].xy[0]= x0; |
| 618 | vertices[0].xy[1]= y; |
| 619 | vertices[0].tex_coord[0]= 0; |
| 620 | vertices[0].tex_coord[1]= loading_texture_.Height (); |
| 621 | |
| 622 | vertices[1].xy[0]= x1; |
| 623 | vertices[1].xy[1]= y; |
| 624 | vertices[1].tex_coord[0]= mid_tc; |
| 625 | vertices[1].tex_coord[1]= loading_texture_.Height(); |
| 626 | |
| 627 | vertices[2].xy[0]= x1; |
| 628 | vertices[2].xy[1]= y + int(loading_texture_.Height() >> 1u) * scale; |
| 629 | vertices[2].tex_coord[0]= mid_tc; |
| 630 | vertices[2].tex_coord[1]= loading_texture_.Height () >> 1u; |
| 631 | |
| 632 | vertices[3].xy[0]= x0; |
| 633 | vertices[3].xy[1]= y + int(loading_texture_.Height() >> 1u) * scale; |
| 634 | vertices[3].tex_coord[0]= 0; |
| 635 | vertices[3].tex_coord[1]= loading_texture_.Height () >> 1u; |
| 636 | |
| 637 | vertices[4].xy[0]= x1; |
| 638 | vertices[4].xy[1]= y; |
| 639 | vertices[4].tex_coord[0]= mid_tc; |
| 640 | vertices[4].tex_coord[1]= loading_texture_.Height () >> 1u; |
| 641 | |
| 642 | vertices[5].xy[0]= x0 + int(loading_texture_.Width()) * scale; |
| 643 | vertices[5].xy[1]= y; |
| 644 | vertices[5].tex_coord[0]= loading_texture_.Width (); |
| 645 | vertices[5].tex_coord[1]= loading_texture_.Height() >> 1u; |
| 646 | |
| 647 | vertices[6].xy[0]= x0 + int(loading_texture_.Width()) * scale; |
| 648 | vertices[6].xy[1]= y + int(loading_texture_.Height() >> 1u) * scale; |
| 649 | vertices[6].tex_coord[0]= loading_texture_.Width (); |
| 650 | vertices[6].tex_coord[1]= 0; |
| 651 | |
| 652 | vertices[7].xy[0]= x1; |
| 653 | vertices[7].xy[1]= y + int(loading_texture_.Height() >> 1u) * scale; |
| 654 | vertices[7].tex_coord[0]= mid_tc; |
| 655 | vertices[7].tex_coord[1]= 0; |
| 656 | |
| 657 | polygon_buffer_.VertexSubData( vertices , sizeof(vertices), 0u ); |
| 658 | |
| 659 | // Draw |
| 660 | r_OGLStateManager::UpdateState( g_gl_state ); |
| 661 | |
| 662 | menu_picture_shader_.Bind(); |
no test coverage detected