# HG changeset patch # User Sebastien Jodogne # Date 1675457349 -3600 # Node ID 0fa4c0ca429d4259df488762eff4dbfc432dfc8d # Parent 85a20cbfcc048cb79ce55d737e09d321e5173277 added OpenGLTexture::BindAsTextureUnit() diff -r 85a20cbfcc04 -r 0fa4c0ca429d OrthancStone/Sources/OpenGL/OpenGLTexture.cpp --- a/OrthancStone/Sources/OpenGL/OpenGLTexture.cpp Wed Feb 01 08:23:26 2023 +0100 +++ b/OrthancStone/Sources/OpenGL/OpenGLTexture.cpp Fri Feb 03 21:49:09 2023 +0100 @@ -156,6 +156,23 @@ } + void OpenGLTexture::BindAsTextureUnit(GLint location, + unsigned int unit) const + { + if (unit >= 32) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + + assert(GL_TEXTURE0 + 1 == GL_TEXTURE1 && + GL_TEXTURE0 + 31 == GL_TEXTURE31); + + glActiveTexture(GL_TEXTURE0 + unit); + glBindTexture(GL_TEXTURE_2D, texture_); + glUniform1i(location, unit /* texture unit */); + } + + Orthanc::ImageAccessor* OpenGLTexture::Download(Orthanc::PixelFormat format) const { if (context_.IsContextLost()) diff -r 85a20cbfcc04 -r 0fa4c0ca429d OrthancStone/Sources/OpenGL/OpenGLTexture.h --- a/OrthancStone/Sources/OpenGL/OpenGLTexture.h Wed Feb 01 08:23:26 2023 +0100 +++ b/OrthancStone/Sources/OpenGL/OpenGLTexture.h Fri Feb 03 21:49:09 2023 +0100 @@ -86,6 +86,9 @@ void Bind(GLint location) const; + void BindAsTextureUnit(GLint location, + unsigned int unit) const; + Orthanc::ImageAccessor* Download(Orthanc::PixelFormat format) const; /**