MCPcopy Create free account
hub / github.com/TankOs/SFGUI / DrawRenderTexture

Method DrawRenderTexture

src/SFGUI/Canvas.cpp:473–587  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

471}
472
473void Canvas::DrawRenderTexture() {
474 if( !m_render_texture ) {
475 return;
476 }
477
478 if( !non_legacy_supported ) {
479 // Matrix mode is currently GL_TEXTURE as set by Renderer.
480 // We get ready for a surprise from SFML...
481 CheckGLError( glPushMatrix() );
482 sf::Texture::bind( &( m_render_texture->getTexture() ) );
483
484 if( !m_display_list ) {
485 m_display_list = glGenLists( 1 );
486
487 if( !m_display_list ) {
488#if defined( SFGUI_DEBUG )
489 std::cerr << "SFGUI warning: Canvas failed to create OpenGL display list.\n";
490#endif
491 }
492
493 CheckGLError( glNewList( m_display_list, GL_COMPILE ) );
494
495 // Pop the texture matrix that SFML secretly loaded behind our backs...
496 CheckGLError( glMatrixMode( GL_TEXTURE ) );
497 CheckGLError( glPopMatrix() );
498
499 CheckGLError( glColor3ub( 255, 255, 255 ) );
500
501 // Oh the horror... not.
502 CheckGLError( glMatrixMode( GL_MODELVIEW ) );
503 CheckGLError( glPushMatrix() );
504 CheckGLError( glLoadIdentity() );
505 CheckGLError( glMatrixMode( GL_PROJECTION ) );
506 CheckGLError( glPushMatrix() );
507 CheckGLError( glLoadIdentity() );
508 CheckGLError( glBegin( GL_QUADS ) );
509 CheckGLError( glTexCoord2s( 0, 0 ) );
510 CheckGLError( glVertex2s( -1, -1 ) );
511 CheckGLError( glTexCoord2s( 1, 0 ) );
512 CheckGLError( glVertex2s( 1, -1 ) );
513 CheckGLError( glTexCoord2s( 1, 1 ) );
514 CheckGLError( glVertex2s( 1, 1 ) );
515 CheckGLError( glTexCoord2s( 0, 1 ) );
516 CheckGLError( glVertex2s( -1, 1 ) );
517 CheckGLError( glEnd() );
518 CheckGLError( glPopMatrix() );
519 CheckGLError( glMatrixMode( GL_MODELVIEW ) );
520 CheckGLError( glPopMatrix() );
521 CheckGLError( glMatrixMode( GL_TEXTURE ) );
522
523 CheckGLError( glEndList() );
524 }
525
526 CheckGLError( glCallList( m_display_list ) );
527 }
528 else {
529 // Non-Legacy
530 if( !m_shader ) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected