-
class
SGFXAPI::Texture¶ This class represents a GPU-side texture.
Does not store the data on the CPU side.
- See
- getHandle(const Texture&)
Public Functions
-
Texture(TextureType texture_type, TextureInternalFormat internal_format, int width, int height, int depth, size_t mipmaps, int rowalignment, ResourceUsage usage)¶ - Parameters
texture_type-The type of texture, 1D,2D,3D,arrays etc.
internal_format-A suggestion to the GPU of the type of format to store the image in, internally, on the GPU.
width-The width of the image; for 1D, the length of the image.
height-The height of the image, for 1D, this will be 1. For a 1D array, this will be the length of the array.
depth-The depth of the image, for 1D,2D, this will be 1. For a 2D array, this will be the length of the array.
mipmaps-The number of mipmaps this texture will have. If left out, it will expect to have the maximum number of mipmaps.
rowalignment-The data uploaded to the GPU is uploaded in “rows” of size
width. Each row will have a “row alignment” which means that if the row’s length does not align with specifiedrowalignment, there will be padding until it aligns. Can only be one of 1, 2, 4, or 8. Defaults to 4. See UpdateToGpu().usage-If the texture parameters will change or not (they won’t change under normal use, because the parameters are set in the ctor and cannot be changed). Defaults to UsageImmutable.
-
int
MaxMimpapLevels() const¶ Given the dimensions and type of texture, this function returns the maximum number of mipmap levels.
-
void
UpdateToGpu(int width, int height, int depth, TextureFormat textureFormat, const uint8_t *data, size_t dataBytesSize, int level, const std::string &debugName)¶ Set the data of a mipmap level of the texture.
- Parameters
textureFormat-The format of the data being uploaded. The data will be stored according to the
internal_formatparameter in the ctor Texture::Texture().data-pointer to a buffer with the data for the texture. If a PBO is bound, data is the offset into the PBO.
dataBytesSize-the size of the entire buffer. This is basically rowsize*width*height, where rowsize is (sizeperpixel*width) adjusted for
rowalignment, specified in the ctor.level-this specifies the mipmap level to upload the data for. Level 0 must be uploaded. Other levels are optional, depending on the
mipmapsparameter specified in the Texture() ctor. Call GenMipmaps() to automatically generate the mipmaps from level 0.
-
void
GenMipmaps()¶ Automatically generate mipmaps.
Call this after setting mipmap level 0.
See UpdateToGpu()
-
void
Bind()¶ Activate this texture, to be used in the following calls; some methods of this class may require that this texture is in the “bound” state before using them.
- See
- UnBind(), UnBindAll(), IsBound()
-
void
UnBind()¶ Deactivate this texture; this function checks with the driver that this texture is bound; and if it is not already bound, it is a noop; use UnBindAll() to clear the bound state of all/any texture.
- See
- Bind(), UnBindAll(), IsBound()
-
bool
IsBound() const¶ Check if this texture is “bound”.
- See
- Bind(), UnBind(), UnBindAll()
-
int
Width() const¶ Returns the width of the base-texture (mipmap level 0)
-
int
Height() const¶ Returns the height of the base-texture (mipmap level 0).
- If this is a 1D texture this will return a height of 1.
- If this is a 1D texture array, this will return the number of elements in the array.
-
int
Depth() const¶ Returns the depth of the base-texture (mipmap level 0).
- If this is a 1D texture this will return a depth of 1.
- If this is a 2D texture this will return a depth of 1.
- If this is a 2D texture array, this will return the number of elements in the array.
-
TextureFormat
Format() const¶ Returns the TextureFormat specified in the constructor Texture::Texture()
Public Static Functions
-
int
LogicalSizeBytes(int width, int height, int depth, TextureFormat format, int rowalignment)¶ Given the required parameters, this determines the expected size of the CPU-side buffer expected to upload the data from.