Ensure the proper default framebuffer is bound when activating a RenderWindow. Fixes #1471.
This commit is contained in:
parent
5e10e1f0c9
commit
8554d210df
@ -177,6 +177,13 @@ protected:
|
||||
///
|
||||
////////////////////////////////////////////////////////////
|
||||
virtual void onResize();
|
||||
|
||||
private:
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// Member data
|
||||
////////////////////////////////////////////////////////////
|
||||
unsigned int m_defaultFrameBuffer; ///< Framebuffer to bind when targeting this window
|
||||
};
|
||||
|
||||
} // namespace sf
|
||||
|
@ -34,14 +34,16 @@
|
||||
namespace sf
|
||||
{
|
||||
////////////////////////////////////////////////////////////
|
||||
RenderWindow::RenderWindow()
|
||||
RenderWindow::RenderWindow() :
|
||||
m_defaultFrameBuffer(0)
|
||||
{
|
||||
// Nothing to do
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
RenderWindow::RenderWindow(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings)
|
||||
RenderWindow::RenderWindow(VideoMode mode, const String& title, Uint32 style, const ContextSettings& settings) :
|
||||
m_defaultFrameBuffer(0)
|
||||
{
|
||||
// Don't call the base class constructor because it contains virtual function calls
|
||||
create(mode, title, style, settings);
|
||||
@ -49,7 +51,8 @@ RenderWindow::RenderWindow(VideoMode mode, const String& title, Uint32 style, co
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
RenderWindow::RenderWindow(WindowHandle handle, const ContextSettings& settings)
|
||||
RenderWindow::RenderWindow(WindowHandle handle, const ContextSettings& settings) :
|
||||
m_defaultFrameBuffer(0)
|
||||
{
|
||||
// Don't call the base class constructor because it contains virtual function calls
|
||||
create(handle, settings);
|
||||
@ -83,7 +86,7 @@ bool RenderWindow::setActive(bool active)
|
||||
// try to draw to the default framebuffer of the RenderWindow
|
||||
if (active && result && priv::RenderTextureImplFBO::isAvailable())
|
||||
{
|
||||
priv::RenderTextureImplFBO::unbind();
|
||||
glCheck(GLEXT_glBindFramebuffer(GLEXT_GL_FRAMEBUFFER, m_defaultFrameBuffer));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -108,6 +111,13 @@ Image RenderWindow::capture() const
|
||||
////////////////////////////////////////////////////////////
|
||||
void RenderWindow::onCreate()
|
||||
{
|
||||
if (priv::RenderTextureImplFBO::isAvailable())
|
||||
{
|
||||
// Retrieve the framebuffer ID we have to bind when targeting the window for rendering
|
||||
// We assume that this window's context is still active at this point
|
||||
glCheck(glGetIntegerv(GLEXT_GL_FRAMEBUFFER_BINDING, reinterpret_cast<GLint*>(&m_defaultFrameBuffer)));
|
||||
}
|
||||
|
||||
// Just initialize the render target part
|
||||
RenderTarget::initialize();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user