Open CASCADE Technology
7.4.0
|
Texture resource. More...
#include <OpenGl_Texture.hxx>
Public Member Functions | |
OpenGl_Texture (const TCollection_AsciiString &theResourceId=TCollection_AsciiString(), const Handle< Graphic3d_TextureParams > &theParams=Handle< Graphic3d_TextureParams >()) | |
Create uninitialized texture. More... | |
virtual | ~OpenGl_Texture () |
Destroy object. More... | |
bool | IsValid () const |
GLenum | GetTarget () const |
GLsizei | SizeX () const |
GLsizei | SizeY () const |
GLuint | TextureId () const |
GLenum | GetFormat () const |
GLint | SizedFormat () const |
bool | IsAlpha () const |
Return true for GL_RED and GL_ALPHA formats. More... | |
void | SetAlpha (const bool theValue) |
Setup to interprete the format as Alpha by Shader Manager (should be GL_ALPHA within compatible context or GL_RED otherwise). More... | |
bool | Create (const Handle< OpenGl_Context > &theCtx) |
Creates Texture id if not yet generated. Data should be initialized by another method. More... | |
virtual void | Release (OpenGl_Context *theCtx) override |
Destroy object - will release GPU memory if any. More... | |
const Handle< OpenGl_Sampler > & | Sampler () const |
Return texture sampler. More... | |
void | SetSampler (const Handle< OpenGl_Sampler > &theSampler) |
Set texture sampler. More... | |
bool | InitSamplerObject (const Handle< OpenGl_Context > &theCtx) |
Initialize the Sampler Object (as OpenGL object). More... | |
void | Bind (const Handle< OpenGl_Context > &theCtx) const |
Bind this Texture to the unit specified in sampler parameters. Also binds Sampler Object if it is allocated. More... | |
void | Unbind (const Handle< OpenGl_Context > &theCtx) const |
Unbind texture from the unit specified in sampler parameters. Also unbinds Sampler Object if it is allocated. More... | |
void | Bind (const Handle< OpenGl_Context > &theCtx, const Graphic3d_TextureUnit theTextureUnit) const |
Bind this Texture to specified unit. Also binds Sampler Object if it is allocated. More... | |
void | Unbind (const Handle< OpenGl_Context > &theCtx, const Graphic3d_TextureUnit theTextureUnit) const |
Unbind texture from specified unit. Also unbinds Sampler Object if it is allocated. More... | |
Standard_Size | Revision () const |
Revision of associated data source. More... | |
void | SetRevision (const Standard_Size theRevision) |
Set revision of associated data source. More... | |
bool | Init (const Handle< OpenGl_Context > &theCtx, const Image_PixMap &theImage, const Graphic3d_TypeOfTexture theType) |
Notice that texture will be unbound after this call. More... | |
bool | Init (const Handle< OpenGl_Context > &theCtx, const GLint theTextFormat, const GLenum thePixelFormat, const GLenum theDataType, const GLsizei theSizeX, const GLsizei theSizeY, const Graphic3d_TypeOfTexture theType, const Image_PixMap *theImage=NULL) |
Initialize the texture with specified format, size and texture type. If theImage is empty the texture data will contain trash. Notice that texture will be unbound after this call. More... | |
bool | Init (const Handle< OpenGl_Context > &theCtx, const Handle< Graphic3d_TextureMap > &theTextureMap) |
Initialize the texture with Graphic3d_TextureMap. It is an universal way to initialize. Sitable initialization method will be chosen. More... | |
bool | Init2DMultisample (const Handle< OpenGl_Context > &theCtx, const GLsizei theNbSamples, const GLint theTextFormat, const GLsizei theSizeX, const GLsizei theSizeY) |
Initialize the 2D multisampling texture using glTexImage2DMultisample(). More... | |
bool | InitRectangle (const Handle< OpenGl_Context > &theCtx, const Standard_Integer theSizeX, const Standard_Integer theSizeY, const OpenGl_TextureFormat &theFormat) |
Allocates texture rectangle with specified format and size. More... | |
bool | Init3D (const Handle< OpenGl_Context > &theCtx, const GLint theTextFormat, const GLenum thePixelFormat, const GLenum theDataType, const Standard_Integer theSizeX, const Standard_Integer theSizeY, const Standard_Integer theSizeZ, const void *thePixels) |
Initializes 3D texture rectangle with specified format and size. More... | |
bool | InitCubeMap (const Handle< OpenGl_Context > &theCtx, const Handle< Graphic3d_CubeMap > &theCubeMap, Standard_Size theSize=0, Image_Format theFormat=Image_Format_RGB, Standard_Boolean theToGenMipmap=Standard_False) |
Initializes 6 sides of cubemap. If theCubeMap is not NULL then size and format will be taken from it and corresponding arguments will be ignored. Otherwise this parametres will be taken from arguments. theToGenMipmap allows to generate mipmaped cubemap. More... | |
bool | InitCubeMap (const Handle< OpenGl_Context > &theCtx, const Handle< Graphic3d_CubeMap > &theCubeMap, Standard_Boolean theToGenMipmap, Standard_Size theSize=0, Image_Format theFormat=Image_Format_RGB) |
The same InitCubeMap but there is another order of arguments. More... | |
Standard_Boolean | HasMipmaps () const |
virtual Standard_Size | EstimatedDataSize () const override |
Returns estimated GPU memory usage for holding data without considering overheads and allocation alignment rules. More... | |
virtual bool | IsPointSprite () const |
Returns TRUE for point sprite texture. More... | |
Public Member Functions inherited from OpenGl_NamedResource | |
OpenGl_NamedResource (const TCollection_AsciiString &theId) | |
Empty constructor. More... | |
const TCollection_AsciiString & | ResourceId () const |
Return resource name. More... | |
Public Member Functions inherited from OpenGl_Resource | |
OpenGl_Resource () | |
Empty constructor. More... | |
virtual | ~OpenGl_Resource () |
Destructor. Inheritors should call Clean (NULL) within it. More... | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. More... | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. More... | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. More... | |
virtual | ~Standard_Transient () |
Destructor must be virtual. More... | |
virtual void | Delete () const |
Memory deallocator for transient classes. More... | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. More... | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. More... | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. More... | |
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More... | |
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More... | |
Standard_Transient * | This () const |
Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. More... | |
Standard_Integer | GetRefCount () const |
Get the reference counter of this object. More... | |
void | IncrementRefCounter () const |
Increments the reference counter of this object. More... | |
Standard_Integer | DecrementRefCounter () const |
Decrements the reference counter of this object; returns the decremented value. More... | |
Static Public Member Functions | |
static Standard_Size | PixelSizeOfPixelFormat (Standard_Integer theInternalFormat) |
Return pixel size of pixel format in bytes. Note that this method considers that OpenGL natively supports this pixel format, which might be not the case - in the latter case, actual pixel size might differ! More... | |
static bool | GetDataFormat (const Handle< OpenGl_Context > &theCtx, const Image_Format theFromat, GLint &theTextFormat, GLenum &thePixelFormat, GLenum &theDataType) |
Return texture type and format by Image_Format. More... | |
static bool | GetDataFormat (const Handle< OpenGl_Context > &theCtx, const Image_PixMap &theData, GLint &theTextFormat, GLenum &thePixelFormat, GLenum &theDataType) |
Return texture type and format by Image_PixMap data format. More... | |
Static Public Member Functions inherited from Standard_Transient | |
static const char * | get_type_name () |
Returns a type descriptor about this object. More... | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. More... | |
Static Public Attributes | |
static const GLuint | NO_TEXTURE = 0 |
Helpful constants. More... | |
Protected Member Functions | |
void | applyDefaultSamplerParams (const Handle< OpenGl_Context > &theCtx) |
Apply default sampler parameters after texture creation. More... | |
Protected Attributes | |
Handle< OpenGl_Sampler > | mySampler |
texture sampler More... | |
Standard_Size | myRevision |
revision of associated data source More... | |
GLuint | myTextureId |
GL resource ID. More... | |
GLenum | myTarget |
GL_TEXTURE_1D/GL_TEXTURE_2D/GL_TEXTURE_3D. More... | |
GLsizei | mySizeX |
texture width More... | |
GLsizei | mySizeY |
texture height More... | |
GLsizei | mySizeZ |
texture depth More... | |
GLenum | myTextFormat |
texture format - GL_RGB, GL_RGBA,... More... | |
GLint | mySizedFormat |
internal (sized) texture format More... | |
Standard_Integer | myNbSamples |
number of MSAA samples More... | |
Standard_Boolean | myHasMipmaps |
flag indicates that texture was uploaded with mipmaps More... | |
bool | myIsAlpha |
indicates alpha format More... | |
Protected Attributes inherited from OpenGl_NamedResource | |
TCollection_AsciiString | myResourceId |
resource name More... | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. More... | |
Texture resource.
OpenGl_Texture::OpenGl_Texture | ( | const TCollection_AsciiString & | theResourceId = TCollection_AsciiString() , |
const Handle< Graphic3d_TextureParams > & | theParams = Handle< Graphic3d_TextureParams >() |
||
) |
Create uninitialized texture.
|
virtual |
Destroy object.
|
protected |
Apply default sampler parameters after texture creation.
|
inline |
Bind this Texture to the unit specified in sampler parameters. Also binds Sampler Object if it is allocated.
void OpenGl_Texture::Bind | ( | const Handle< OpenGl_Context > & | theCtx, |
const Graphic3d_TextureUnit | theTextureUnit | ||
) | const |
Bind this Texture to specified unit. Also binds Sampler Object if it is allocated.
bool OpenGl_Texture::Create | ( | const Handle< OpenGl_Context > & | theCtx | ) |
Creates Texture id if not yet generated. Data should be initialized by another method.
|
overridevirtual |
Returns estimated GPU memory usage for holding data without considering overheads and allocation alignment rules.
Implements OpenGl_Resource.
|
static |
Return texture type and format by Image_Format.
|
inlinestatic |
Return texture type and format by Image_PixMap data format.
|
inline |
|
inline |
|
inline |
bool OpenGl_Texture::Init | ( | const Handle< OpenGl_Context > & | theCtx, |
const Image_PixMap & | theImage, | ||
const Graphic3d_TypeOfTexture | theType | ||
) |
Notice that texture will be unbound after this call.
bool OpenGl_Texture::Init | ( | const Handle< OpenGl_Context > & | theCtx, |
const GLint | theTextFormat, | ||
const GLenum | thePixelFormat, | ||
const GLenum | theDataType, | ||
const GLsizei | theSizeX, | ||
const GLsizei | theSizeY, | ||
const Graphic3d_TypeOfTexture | theType, | ||
const Image_PixMap * | theImage = NULL |
||
) |
Initialize the texture with specified format, size and texture type. If theImage is empty the texture data will contain trash. Notice that texture will be unbound after this call.
bool OpenGl_Texture::Init | ( | const Handle< OpenGl_Context > & | theCtx, |
const Handle< Graphic3d_TextureMap > & | theTextureMap | ||
) |
Initialize the texture with Graphic3d_TextureMap. It is an universal way to initialize. Sitable initialization method will be chosen.
bool OpenGl_Texture::Init2DMultisample | ( | const Handle< OpenGl_Context > & | theCtx, |
const GLsizei | theNbSamples, | ||
const GLint | theTextFormat, | ||
const GLsizei | theSizeX, | ||
const GLsizei | theSizeY | ||
) |
Initialize the 2D multisampling texture using glTexImage2DMultisample().
bool OpenGl_Texture::Init3D | ( | const Handle< OpenGl_Context > & | theCtx, |
const GLint | theTextFormat, | ||
const GLenum | thePixelFormat, | ||
const GLenum | theDataType, | ||
const Standard_Integer | theSizeX, | ||
const Standard_Integer | theSizeY, | ||
const Standard_Integer | theSizeZ, | ||
const void * | thePixels | ||
) |
Initializes 3D texture rectangle with specified format and size.
bool OpenGl_Texture::InitCubeMap | ( | const Handle< OpenGl_Context > & | theCtx, |
const Handle< Graphic3d_CubeMap > & | theCubeMap, | ||
Standard_Size | theSize = 0 , |
||
Image_Format | theFormat = Image_Format_RGB , |
||
Standard_Boolean | theToGenMipmap = Standard_False |
||
) |
Initializes 6 sides of cubemap. If theCubeMap is not NULL then size and format will be taken from it and corresponding arguments will be ignored. Otherwise this parametres will be taken from arguments. theToGenMipmap allows to generate mipmaped cubemap.
|
inline |
The same InitCubeMap but there is another order of arguments.
bool OpenGl_Texture::InitRectangle | ( | const Handle< OpenGl_Context > & | theCtx, |
const Standard_Integer | theSizeX, | ||
const Standard_Integer | theSizeY, | ||
const OpenGl_TextureFormat & | theFormat | ||
) |
Allocates texture rectangle with specified format and size.
bool OpenGl_Texture::InitSamplerObject | ( | const Handle< OpenGl_Context > & | theCtx | ) |
Initialize the Sampler Object (as OpenGL object).
theCtx | currently bound OpenGL context |
|
inline |
Return true for GL_RED and GL_ALPHA formats.
|
inlinevirtual |
Returns TRUE for point sprite texture.
Reimplemented in OpenGl_PointSprite.
|
inline |
|
static |
Return pixel size of pixel format in bytes. Note that this method considers that OpenGL natively supports this pixel format, which might be not the case - in the latter case, actual pixel size might differ!
|
overridevirtual |
Destroy object - will release GPU memory if any.
Implements OpenGl_Resource.
Reimplemented in OpenGl_PointSprite.
|
inline |
Revision of associated data source.
|
inline |
Return texture sampler.
|
inline |
Setup to interprete the format as Alpha by Shader Manager (should be GL_ALPHA within compatible context or GL_RED otherwise).
|
inline |
Set revision of associated data source.
|
inline |
Set texture sampler.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Unbind texture from the unit specified in sampler parameters. Also unbinds Sampler Object if it is allocated.
void OpenGl_Texture::Unbind | ( | const Handle< OpenGl_Context > & | theCtx, |
const Graphic3d_TextureUnit | theTextureUnit | ||
) | const |
Unbind texture from specified unit. Also unbinds Sampler Object if it is allocated.
|
protected |
flag indicates that texture was uploaded with mipmaps
|
protected |
indicates alpha format
|
protected |
number of MSAA samples
|
protected |
revision of associated data source
|
protected |
texture sampler
|
protected |
internal (sized) texture format
|
protected |
texture width
|
protected |
texture height
|
protected |
texture depth
|
protected |
GL_TEXTURE_1D/GL_TEXTURE_2D/GL_TEXTURE_3D.
|
protected |
texture format - GL_RGB, GL_RGBA,...
|
protected |
GL resource ID.
|
static |
Helpful constants.