diff --git a/include/SFML/Graphics/Shader.hpp b/include/SFML/Graphics/Shader.hpp index f2b4dca1..d3278f9b 100644 --- a/include/SFML/Graphics/Shader.hpp +++ b/include/SFML/Graphics/Shader.hpp @@ -456,6 +456,18 @@ public: //////////////////////////////////////////////////////////// void setParameter(const std::string& name, CurrentTextureType); + //////////////////////////////////////////////////////////// + /// \brief Get the underlying OpenGL handle of the shader. + /// + /// You shouldn't need to use this function, unless you have + /// very specific stuff to implement that SFML doesn't support, + /// or implement a temporary workaround until a bug is fixed. + /// + /// \return OpenGL handle of the shader or 0 if not yet loaded + /// + //////////////////////////////////////////////////////////// + unsigned int getNativeHandle() const; + //////////////////////////////////////////////////////////// /// \brief Bind a shader for rendering /// diff --git a/include/SFML/Graphics/Texture.hpp b/include/SFML/Graphics/Texture.hpp index 12ea4f26..421861e0 100644 --- a/include/SFML/Graphics/Texture.hpp +++ b/include/SFML/Graphics/Texture.hpp @@ -420,6 +420,18 @@ public: //////////////////////////////////////////////////////////// Texture& operator =(const Texture& right); + //////////////////////////////////////////////////////////// + /// \brief Get the underlying OpenGL handle of the texture. + /// + /// You shouldn't need to use this function, unless you have + /// very specific stuff to implement that SFML doesn't support, + /// or implement a temporary workaround until a bug is fixed. + /// + /// \return OpenGL handle of the texture or 0 if not yet created + /// + //////////////////////////////////////////////////////////// + unsigned int getNativeHandle() const; + //////////////////////////////////////////////////////////// /// \brief Bind a texture for rendering /// diff --git a/src/SFML/Graphics/Shader.cpp b/src/SFML/Graphics/Shader.cpp index 92fd3240..80ca28e1 100644 --- a/src/SFML/Graphics/Shader.cpp +++ b/src/SFML/Graphics/Shader.cpp @@ -456,6 +456,13 @@ void Shader::setParameter(const std::string& name, CurrentTextureType) } +//////////////////////////////////////////////////////////// +unsigned int Shader::getNativeHandle() const +{ + return m_shaderProgram; +} + + //////////////////////////////////////////////////////////// void Shader::bind(const Shader* shader) { @@ -778,6 +785,13 @@ void Shader::setParameter(const std::string& name, CurrentTextureType) } +//////////////////////////////////////////////////////////// +unsigned int Shader::getNativeHandle() const +{ + return 0; +} + + //////////////////////////////////////////////////////////// void Shader::bind(const Shader* shader) { diff --git a/src/SFML/Graphics/Texture.cpp b/src/SFML/Graphics/Texture.cpp index 1dc79cf4..7680cef9 100644 --- a/src/SFML/Graphics/Texture.cpp +++ b/src/SFML/Graphics/Texture.cpp @@ -563,6 +563,13 @@ Texture& Texture::operator =(const Texture& right) } +//////////////////////////////////////////////////////////// +unsigned int Texture::getNativeHandle() const +{ + return m_texture; +} + + //////////////////////////////////////////////////////////// unsigned int Texture::getValidSize(unsigned int size) {