Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Protected Attributes | List of all members
BIAS::glfCubeMap Class Reference

A cube map texture. More...

#include <OpenGLFramework/Base/glfCubeMap.hh>

+ Inheritance diagram for BIAS::glfCubeMap:
+ Collaboration diagram for BIAS::glfCubeMap:

Public Member Functions

void Allocate (int width, int height, GLenum internalFormat, int mipmap=0)
 Creates a cube map with undefined content. More...
 
void Allocate (int width, int height, ImageBase::EStorageType storageType, ImageBase::EColorModel colorModel, int mipmap=0)
 Creates a cube map with undefined content. More...
 
void Bind () const
 Binds the texture. More...
 
void BindTU () const
 Binds the texture. More...
 
void BindTU (int number) const
 Binds the texture. More...
 
void CopyChannelsToImage (GLenum target, ImageBase &image, GLenum format, int mipmap=0)
 Copies the pixels of a mipmap of a side of the cube map to a BIAS::ImageBase and interprets the texture using the given format. More...
 
void CopyToImage (GLenum target, ImageBase &image, int mipmap=0)
 Copies the pixels of a mipmap of a side of the cube map to a BIAS::ImageBase. More...
 
void Create ()
 Creates the texture but does not upload any data yet. More...
 
void EnlargeToPowerOfTwoIfRequired (bool enlargeToPotIfRequired=true)
 Sets whether to enlarge each texture dimension to the next power of two, if non-power-of-two textures are not supported. More...
 
void GenerateMipMap ()
 Explicitly generates the mipmaps of the texture in hardware. More...
 
int GetHeight (int mipmap=0) const
 Returns the height of a mipmap of each side of the cube map. More...
 
GLuint GetTextureID () const
 Returns the OpenGL texture id. More...
 
GLint GetTextureNr ()
 Returns the OpenGL texture number. More...
 
int GetTextureNrInUniformFormat ()
 Returns the OpenGL texture number in uniform format or -1 for error. More...
 
GLenum GetTextureTarget () const
 Returns the OpenGL texture target. More...
 
int GetWidth (int mipmap=0) const
 Returns the width of a mipmap of each side of the cube map. More...
 
 glfCubeMap ()
 
void SetBaseLevel (int baseLevel)
 Sets the minimum (base) mip map level to be used. More...
 
void SetBorderColor (GLfloat r, GLfloat g, GLfloat b, GLfloat a)
 Sets the border color for the texture to be used. More...
 
void SetGenerateMipMap (bool generateMipMap)
 Sets whether to automatically generate mipmaps when the first mipmap is uploaded. More...
 
void SetMagFilter (GLenum magFilter)
 Sets the magnification function. More...
 
void SetMaxLevel (int maxLevel)
 Sets the maximum mip map level to be used. More...
 
void SetMinFilter (GLenum minFilter)
 Sets the minifying function. More...
 
void SetTextureNr (GLint textureNr)
 Sets the OpenGL texture number (GL_TEXTURE0 - GL_TEXTURE[MaxTextureUnit-1]). More...
 
void SetTextureNrInUniformFormat (int textureNr)
 Sets the OpenGL texture number (0 - MaxTextureUnit-1). More...
 
void SetWrapR (GLenum wrapR)
 Sets the wrapping mode for the 3rd texture coordinate. More...
 
void SetWrapS (GLenum wrapS)
 Sets the wrapping mode for the 1st texture coordinate. More...
 
void SetWrapT (GLenum wrapT)
 Sets the wrapping mode for the 2nd texture coordinate. More...
 
void UploadImage (GLenum target, const BIAS::ImageBase &image, GLenum internalFormat=0, int mipmap=0)
 Uploads a BIAS::Image to a mipmap of one side of the cube map. More...
 
void UploadImageFromFile (GLenum target, const std::string &fileName, GLenum internalFormat=0, int mipmap=0)
 Uploads an image loaded from a file to a mipmap of one side of the cube map. More...
 

Static Protected Member Functions

Utility functions used by derived classes.
static int NextPowerOfTwo (int i)
 Returns the smallest power of two that is greater than i. More...
 
static int GetMaxSupportedTextureUnits ()
 Computes a pixel format that can be used with glGetTexImage for an internal format of a texture. More...
 

Protected Attributes

bool enlargeToPot_
 
GLuint id_
 
int MAX_TEXTURE_UNITS_
 
GLenum target_
 
GLint textureNr_
 

Detailed Description

A cube map texture.

Note
The Allocate methods need not be called, if one of the Upload... methods is used.
Author
jkollmann

Definition at line 40 of file glfCubeMap.hh.

Constructor & Destructor Documentation

glfCubeMap::glfCubeMap ( )

Definition at line 35 of file glfCubeMap.cpp.

Member Function Documentation

void glfCubeMap::Allocate ( int  width,
int  height,
GLenum  internalFormat,
int  mipmap = 0 
)

Creates a cube map with undefined content.

This can be used for cube maps in conjuction with framebuffer objects.

See glTexImage2D documentation for a list of valid internal formats.

Definition at line 83 of file glfCubeMap.cpp.

References BIAS::glfTexture::Bind(), BIAS::glfTexture::enlargeToPot_, BIAS::glfFormatDB::GetFormatForInternalFormat(), and BIAS::glfTexture::NextPowerOfTwo().

Referenced by Allocate().

void glfCubeMap::Allocate ( int  width,
int  height,
ImageBase::EStorageType  storageType,
ImageBase::EColorModel  colorModel,
int  mipmap = 0 
)

Creates a cube map with undefined content.

This can be used for cube maps in conjuction with framebuffer objects.

The internal format is chosen based on the given BIAS storage type and color model.

Definition at line 105 of file glfCubeMap.cpp.

References Allocate(), and BIAS::glfFormatDB::ProposeInternalFormat().

void glfTexture::Bind ( ) const
inherited
void glfTexture::BindTU ( ) const
inherited

Binds the texture.

Set texture active. Use this for multitexturing shaders without the use of a glfbatch.

Attention
For internal usage inside OpenGLFramework Base library only.

Definition at line 249 of file glfTexture.cpp.

References BIAS::glfTexture::id_, BIAS::glfTexture::target_, and BIAS::glfTexture::textureNr_.

Referenced by BIAS::OutputLensDistortion::Draw_().

void glfTexture::BindTU ( int  number) const
inherited

Binds the texture.

Sets the texture active with GL_TEXTURE0+number, before binding

Attention
For internal usage inside OpenGLFramework Base library only.

Definition at line 259 of file glfTexture.cpp.

References BIAS::glfTexture::id_, and BIAS::glfTexture::target_.

void glfCubeMap::CopyChannelsToImage ( GLenum  target,
BIAS::ImageBase image,
GLenum  format,
int  mipmap = 0 
)

Copies the pixels of a mipmap of a side of the cube map to a BIAS::ImageBase and interprets the texture using the given format.

Can be used to only copy one channel of the texture to an image. Valid formats are: GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_BGR, GL_RGBA, GL_BGRA, GL_LUMINANCE, GL_LUMINANCE_ALPHA

Attention
The returned image will contain the texture upside down according to the OpenGL specifications. You can fix this by either flipping the image after calling this method or by rendering the scene upside down.

Definition at line 149 of file glfCubeMap.cpp.

References BIAS::glfTexture::Bind(), GetHeight(), BIAS::ImageBase::GetImageData(), BIAS::glfFormatDB::GetPixelTypeForStorageType(), BIAS::ImageBase::GetStorageType(), GetWidth(), BIAS::ImageBase::Init(), BIAS::ImageBase::IsEmpty(), and BIAS::ImageBase::Release().

void glfCubeMap::CopyToImage ( GLenum  target,
ImageBase image,
int  mipmap = 0 
)

Copies the pixels of a mipmap of a side of the cube map to a BIAS::ImageBase.

The image will be initialized with the size of the texture and the appropriate number of channels based on the textures internal format.

Attention
The given image must have a valid storage type. The easiest way is to pass a BIAS::Image<T>. Storage type ST_double is not supported.
The color model of the image is not modified! (TODO?)
The returned image will contain the texture upside down according to the OpenGL specifications. You can fix this by either flipping the image after calling this method or by rendering the scene upside down.

Definition at line 114 of file glfCubeMap.cpp.

References BIAS::glfTexture::Bind(), BIAS::glfFormatDB::GetFormatForInternalFormat(), GetHeight(), BIAS::ImageBase::GetImageData(), BIAS::glfFormatDB::GetPixelTypeForStorageType(), BIAS::ImageBase::GetStorageType(), GetWidth(), BIAS::ImageBase::Init(), BIAS::ImageBase::IsEmpty(), and BIAS::ImageBase::Release().

void glfTexture::Create ( )
inherited
void glfTexture::EnlargeToPowerOfTwoIfRequired ( bool  enlargeToPotIfRequired = true)
inherited

Sets whether to enlarge each texture dimension to the next power of two, if non-power-of-two textures are not supported.

Otherwise, uploading a non-power-of-two texture will cause an exception to be thrown, if the hardware does not support it. The default is 'false'. Must be called before any data is uploaded to the texture.

Definition at line 163 of file glfTexture.cpp.

References BIAS::glfTexture::enlargeToPot_.

void glfTexture::GenerateMipMap ( )
inherited

Explicitly generates the mipmaps of the texture in hardware.

This can be used, when the texture was generated by rendering to a framebuffer object.

Definition at line 194 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

Referenced by BIAS::DistortionRendering::EndRendering(), and BIAS::DistortionRendering::Init().

int glfCubeMap::GetHeight ( int  mipmap = 0) const

Returns the height of a mipmap of each side of the cube map.

Definition at line 209 of file glfCubeMap.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

Referenced by CopyChannelsToImage(), and CopyToImage().

int glfTexture::GetMaxSupportedTextureUnits ( )
staticprotectedinherited

Computes a pixel format that can be used with glGetTexImage for an internal format of a texture.

Also returns the number of channels. For example: If internalFormat = GL_R3_G3_B2, then format = GL_RGB and numChannels = 3.

Deprecated:
use glfFormatDB

Returns the OpenGL pixel type (GL_UNSIGNED_BYTE etc.) for a BIAS storage type.

Deprecated:
use glfFormatDB

Returns the OpenGL pixel format (GL_RGB etc.) for a BIAS color model.

Deprecated:
use glfFormatDB

cp from glfBatch

Definition at line 185 of file glfTexture.cpp.

Referenced by BIAS::glfTexture::SetTextureNr(), and BIAS::glfTexture::SetTextureNrInUniformFormat().

GLuint BIAS::glfTexture::GetTextureID ( ) const
inlineinherited

Returns the OpenGL texture id.

Attention
For internal usage inside OpenGLFramework Base library only.

Definition at line 144 of file glfTexture.hh.

Referenced by BIAS::clfImage2D::AllocateFromTexture2D(), BIAS::clfImage3D::AllocateFromTexture3D(), and BIAS::glfFramebufferObject::AttachTexture().

GLint BIAS::glfTexture::GetTextureNr ( )
inlineinherited

Returns the OpenGL texture number.

Attention
For internal usage inside OpenGLFramework Base library only.

Definition at line 156 of file glfTexture.hh.

int BIAS::glfTexture::GetTextureNrInUniformFormat ( )
inlineinherited

Returns the OpenGL texture number in uniform format or -1 for error.

Attention
For internal usage inside OpenGLFramework Base library only.

Intended usage:

renderedTexture.SetTextureNr(GL_TEXTURE5);

renderedTexture2.SetTextureNr(GL_TEXTURE6);

shaderProg.SetUniform("renderedTexture", renderedTexture.GetTextureNrInUniformFormat());

shaderProg.SetUniform("renderedTexture2", renderedTexture2.GetTextureNrInUniformFormat());

Definition at line 183 of file glfTexture.hh.

Referenced by BIAS::OutputLensDistortion::Draw_().

GLenum BIAS::glfTexture::GetTextureTarget ( ) const
inlineinherited

Returns the OpenGL texture target.

Attention
For internal usage inside OpenGLFramework Base library only.

Definition at line 150 of file glfTexture.hh.

Referenced by BIAS::clfImage2D::AllocateFromTexture2D(), BIAS::clfImage3D::AllocateFromTexture3D(), and BIAS::glfFramebufferObject::AttachTexture().

int glfCubeMap::GetWidth ( int  mipmap = 0) const

Returns the width of a mipmap of each side of the cube map.

Definition at line 200 of file glfCubeMap.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

Referenced by CopyChannelsToImage(), and CopyToImage().

int glfTexture::NextPowerOfTwo ( int  i)
staticprotectedinherited

Returns the smallest power of two that is greater than i.

Definition at line 269 of file glfTexture.cpp.

Referenced by Allocate(), BIAS::glfTexture2D::Allocate(), UploadImage(), and BIAS::glfTexture2D::UploadImage().

void glfTexture::SetBaseLevel ( int  baseLevel)
inherited

Sets the minimum (base) mip map level to be used.

Definition at line 137 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

void glfTexture::SetBorderColor ( GLfloat  r,
GLfloat  g,
GLfloat  b,
GLfloat  a 
)
inherited

Sets the border color for the texture to be used.

Definition at line 153 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

void glfTexture::SetGenerateMipMap ( bool  generateMipMap)
inherited

Sets whether to automatically generate mipmaps when the first mipmap is uploaded.

Definition at line 129 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

void glfTexture::SetMagFilter ( GLenum  magFilter)
inherited

Sets the magnification function.

Valid values are: GL_NEAREST, GL_LINEAR.

Examples:
ExampleMultisampleBlit.cpp.

Definition at line 97 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

Referenced by BIAS::OutputLensDistortion::CreateLookupTable(), BIAS::DistortionRendering::Init(), BIAS::glfTexture3D::Set(), and BIAS::glfTexture2D::Set().

void glfTexture::SetMaxLevel ( int  maxLevel)
inherited

Sets the maximum mip map level to be used.

Definition at line 145 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

void glfTexture::SetMinFilter ( GLenum  minFilter)
inherited

Sets the minifying function.

Valid values are: GL_NEAREST, GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LINEAR.

Examples:
ExampleMultisampleBlit.cpp.

Definition at line 89 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

Referenced by BIAS::OutputLensDistortion::CreateLookupTable(), BIAS::DistortionRendering::Init(), BIAS::glfTexture3D::Set(), and BIAS::glfTexture2D::Set().

void glfTexture::SetTextureNr ( GLint  textureNr)
inherited

Sets the OpenGL texture number (GL_TEXTURE0 - GL_TEXTURE[MaxTextureUnit-1]).

Attention
For internal usage inside OpenGLFramework Base library only.

Definition at line 207 of file glfTexture.cpp.

References BIAS::glfTexture::GetMaxSupportedTextureUnits(), BIAS::glfTexture::MAX_TEXTURE_UNITS_, and BIAS::glfTexture::textureNr_.

Referenced by BIAS::OutputLensDistortion::CreateLookupTable(), BIAS::glfTexture3D::Set(), and BIAS::glfTexture2D::Set().

void glfTexture::SetTextureNrInUniformFormat ( int  textureNr)
inherited

Sets the OpenGL texture number (0 - MaxTextureUnit-1).

Definition at line 224 of file glfTexture.cpp.

References BIAS::glfTexture::GetMaxSupportedTextureUnits(), BIAS::glfTexture::MAX_TEXTURE_UNITS_, and BIAS::glfTexture::textureNr_.

void glfTexture::SetWrapR ( GLenum  wrapR)
inherited

Sets the wrapping mode for the 3rd texture coordinate.

See Also
TextureParameters::SetWrapS.

Definition at line 121 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

void glfTexture::SetWrapS ( GLenum  wrapS)
inherited

Sets the wrapping mode for the 1st texture coordinate.

Valid values are: GL_CLAMP, GL_CLAMP_TO_BORDER, GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT, GL_REPEAT.

Examples:
ExampleMultisampleBlit.cpp.

Definition at line 105 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

Referenced by BIAS::OutputLensDistortion::CreateLookupTable(), BIAS::DistortionRendering::Init(), BIAS::glfTexture3D::Set(), and BIAS::glfTexture2D::Set().

void glfTexture::SetWrapT ( GLenum  wrapT)
inherited

Sets the wrapping mode for the 2nd texture coordinate.

See Also
TextureParameters::SetWrapS.
Examples:
ExampleMultisampleBlit.cpp.

Definition at line 113 of file glfTexture.cpp.

References BIAS::glfTexture::Bind(), and BIAS::glfTexture::target_.

Referenced by BIAS::OutputLensDistortion::CreateLookupTable(), BIAS::DistortionRendering::Init(), BIAS::glfTexture3D::Set(), and BIAS::glfTexture2D::Set().

void glfCubeMap::UploadImage ( GLenum  target,
const BIAS::ImageBase image,
GLenum  internalFormat = 0,
int  mipmap = 0 
)

Uploads a BIAS::Image to a mipmap of one side of the cube map.

If the given internalFormat is 0, the internal format is chosen based on the storage type and color model of the image.

Attention
The uploaded texture will contain the image upside down according to the OpenGL specifications. You can fix this by either flipping the image before uploading it, or by adjusting the texture coordinates.

The 'target' defines the side of the cube map, and must be one of the following values: GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

Definition at line 39 of file glfCubeMap.cpp.

References BIAS::glfTexture::Bind(), BIAS::glfTexture::enlargeToPot_, BIAS::ImageBase::GetColorModel(), BIAS::glfFormatDB::GetFormatForColorModel(), BIAS::ImageBase::GetHeight(), BIAS::ImageBase::GetImageData(), BIAS::glfFormatDB::GetPixelTypeForStorageType(), BIAS::ImageBase::GetStorageType(), BIAS::ImageBase::GetWidth(), BIAS::glfTexture::NextPowerOfTwo(), BIAS::ImageBase::Pad(), and BIAS::glfFormatDB::ProposeInternalFormat().

Referenced by UploadImageFromFile().

void glfCubeMap::UploadImageFromFile ( GLenum  target,
const std::string &  fileName,
GLenum  internalFormat = 0,
int  mipmap = 0 
)

Uploads an image loaded from a file to a mipmap of one side of the cube map.

If the given internalFormat is 0, the internal format is chosen based on the storage type and color model of the image.

Attention
The uploaded texture will contain the image upside down according to the OpenGL specifications. You can fix this by either flipping the image before uploading it, or by adjusting the texture coordinates.

Definition at line 71 of file glfCubeMap.cpp.

References BIAS::ImageIO::Load(), and UploadImage().

Member Data Documentation

bool BIAS::glfTexture::enlargeToPot_
protectedinherited
GLuint BIAS::glfTexture::id_
protectedinherited
int BIAS::glfTexture::MAX_TEXTURE_UNITS_
protectedinherited
GLenum BIAS::glfTexture::target_
protectedinherited
GLint BIAS::glfTexture::textureNr_
protectedinherited

The documentation for this class was generated from the following files: