Commit 75bb8470 authored by Maciej Suminski's avatar Maciej Suminski
Browse files

Added error messages for OpenGL framebuffer errors. This should eliminate...

Added error messages for OpenGL framebuffer errors. This should eliminate quiet segfaults in case of drivers that cannot handle multiple attachment points for framebuffers.
parent 31dbe2d2
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -95,8 +95,13 @@ unsigned int OPENGL_COMPOSITOR::CreateBuffer()
{
    wxASSERT( m_initialized );

    if( m_buffers.size() >= m_maxBuffers )
    //if( usedBuffers() >= m_maxBuffers )
    {
        wxLogError( wxT( "Cannot create more framebuffers. OpenGL rendering backend requires at"
                         "least 3 framebuffers. You may try to update/change "
                         "your graphic drivers." ) );
        return 0; // Unfortunately we have no more free buffers left
    }

    // GL_COLOR_ATTACHMENTn are consecutive integers
    GLuint attachmentPoint = GL_COLOR_ATTACHMENT0 + usedBuffers();
@@ -165,6 +170,8 @@ unsigned int OPENGL_COMPOSITOR::CreateBuffer()
            wxLogFatalError( wxT( "Cannot create the framebuffer." ) );
            break;
        }

        return 0;
    }

    ClearBuffer();
@@ -218,6 +225,11 @@ void OPENGL_COMPOSITOR::ClearBuffer()
void OPENGL_COMPOSITOR::DrawBuffer( unsigned int aBufferHandle )
{
    wxASSERT( m_initialized );
    if( aBufferHandle == 0 || aBufferHandle > usedBuffers() )
    {
        wxLogError( wxT( "Wrong framebuffer handle" ) );
        return;
    }

    // Switch to the main framebuffer and blit the scene
    glBindFramebuffer( GL_FRAMEBUFFER, DIRECT_RENDERING );