mirror of
https://github.com/SFML/SFML.git
synced 2024-11-28 22:31:09 +08:00
Added notes to documentation and adjusted OpenGL example as a workaround for the side effects of making static functions that require a context work. If the user wants to make use of both sfml-graphics and OpenGL, they should make sure sf::Texture::getMaximumSize() and/or sf::Shader::isAvailable() are called at least once before setting their final context active as those functions will cause a context switch the first time they are called.
This commit is contained in:
parent
7defb17e8c
commit
6959c1a826
@ -22,9 +22,6 @@ int main()
|
|||||||
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML graphics with OpenGL", sf::Style::Default, contextSettings);
|
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML graphics with OpenGL", sf::Style::Default, contextSettings);
|
||||||
window.setVerticalSyncEnabled(true);
|
window.setVerticalSyncEnabled(true);
|
||||||
|
|
||||||
// Make it the active window for OpenGL calls
|
|
||||||
window.setActive();
|
|
||||||
|
|
||||||
// Create a sprite for the background
|
// Create a sprite for the background
|
||||||
sf::Texture backgroundTexture;
|
sf::Texture backgroundTexture;
|
||||||
if (!backgroundTexture.loadFromFile("resources/background.jpg"))
|
if (!backgroundTexture.loadFromFile("resources/background.jpg"))
|
||||||
@ -39,6 +36,13 @@ int main()
|
|||||||
text.setColor(sf::Color(255, 255, 255, 170));
|
text.setColor(sf::Color(255, 255, 255, 170));
|
||||||
text.setPosition(250.f, 450.f);
|
text.setPosition(250.f, 450.f);
|
||||||
|
|
||||||
|
// Make the window the active target for OpenGL calls
|
||||||
|
// Note: If using sf::Texture or sf::Shader with OpenGL,
|
||||||
|
// be sure to call sf::Texture::getMaximumSize() and/or
|
||||||
|
// sf::Shader::isAvailable() at least once before calling
|
||||||
|
// setActive(), as those functions will cause a context switch
|
||||||
|
window.setActive();
|
||||||
|
|
||||||
// Load an OpenGL texture.
|
// Load an OpenGL texture.
|
||||||
// We could directly use a sf::Texture as an OpenGL texture (with its Bind() member function),
|
// We could directly use a sf::Texture as an OpenGL texture (with its Bind() member function),
|
||||||
// but here we want more control on it (generate mipmaps, ...) so we create a new one from an image
|
// but here we want more control on it (generate mipmaps, ...) so we create a new one from an image
|
||||||
|
@ -486,6 +486,9 @@ public :
|
|||||||
/// the shader features. If it returns false, then
|
/// the shader features. If it returns false, then
|
||||||
/// any attempt to use sf::Shader will fail.
|
/// any attempt to use sf::Shader will fail.
|
||||||
///
|
///
|
||||||
|
/// Note: The first call to this function, whether by your
|
||||||
|
/// code or SFML will result in a context switch.
|
||||||
|
///
|
||||||
/// \return True if shaders are supported, false otherwise
|
/// \return True if shaders are supported, false otherwise
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
@ -460,6 +460,9 @@ public :
|
|||||||
/// You can expect a value of 512 pixels for low-end graphics
|
/// You can expect a value of 512 pixels for low-end graphics
|
||||||
/// card, and up to 8192 pixels or more for newer hardware.
|
/// card, and up to 8192 pixels or more for newer hardware.
|
||||||
///
|
///
|
||||||
|
/// Note: The first call to this function, whether by your
|
||||||
|
/// code or SFML will result in a context switch.
|
||||||
|
///
|
||||||
/// \return Maximum size allowed for textures, in pixels
|
/// \return Maximum size allowed for textures, in pixels
|
||||||
///
|
///
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user