mirror of
https://github.com/SFML/SFML.git
synced 2025-01-31 21:55:13 +08:00
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();
|
virtual void onResize();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
// Member data
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
unsigned int m_defaultFrameBuffer; ///< Framebuffer to bind when targeting this window
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace sf
|
} // namespace sf
|
||||||
|
@ -34,14 +34,16 @@
|
|||||||
namespace sf
|
namespace sf
|
||||||
{
|
{
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
RenderWindow::RenderWindow()
|
RenderWindow::RenderWindow() :
|
||||||
|
m_defaultFrameBuffer(0)
|
||||||
{
|
{
|
||||||
// Nothing to do
|
// 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
|
// Don't call the base class constructor because it contains virtual function calls
|
||||||
create(mode, title, style, settings);
|
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
|
// Don't call the base class constructor because it contains virtual function calls
|
||||||
create(handle, settings);
|
create(handle, settings);
|
||||||
@ -83,7 +86,7 @@ bool RenderWindow::setActive(bool active)
|
|||||||
// try to draw to the default framebuffer of the RenderWindow
|
// try to draw to the default framebuffer of the RenderWindow
|
||||||
if (active && result && priv::RenderTextureImplFBO::isAvailable())
|
if (active && result && priv::RenderTextureImplFBO::isAvailable())
|
||||||
{
|
{
|
||||||
priv::RenderTextureImplFBO::unbind();
|
glCheck(GLEXT_glBindFramebuffer(GLEXT_GL_FRAMEBUFFER, m_defaultFrameBuffer));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -108,6 +111,13 @@ Image RenderWindow::capture() const
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
void RenderWindow::onCreate()
|
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
|
// Just initialize the render target part
|
||||||
RenderTarget::initialize();
|
RenderTarget::initialize();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user