0.8.0 API documentation
texture2d_array.hpp
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include "texture2d.hpp"
7 
8 namespace gli
9 {
11  class texture2d_array : public texture
12  {
13  public:
14  typedef extent2d extent_type;
15 
16  public:
19 
21  explicit texture2d_array(
22  format_type Format,
23  extent_type const& Extent,
24  size_type Layers,
25  size_type Levels,
26  swizzles_type const& Swizzles = swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA));
27 
29  explicit texture2d_array(
30  format_type Format,
31  extent_type const & Extent,
32  size_type Layers,
33  swizzles_type const& Swizzles = swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA));
34 
36  explicit texture2d_array(
37  texture const& Texture);
38 
40  explicit texture2d_array(
41  texture const& Texture,
42  format_type Format,
43  size_type BaseLayer, size_type MaxLayer,
44  size_type BaseFace, size_type MaxFace,
45  size_type BaseLevel, size_type MaxLevel,
46  swizzles_type const& Swizzles = swizzles_type(SWIZZLE_RED, SWIZZLE_GREEN, SWIZZLE_BLUE, SWIZZLE_ALPHA));
47 
49  explicit texture2d_array(
50  texture2d_array const& Texture,
51  size_type BaseLayer, size_type MaxLayer,
52  size_type BaseLevel, size_type MaxLevel);
53 
55  texture2d operator[](size_type Layer) const;
56 
58  extent_type extent(size_type Level = 0) const;
59 
61  template <typename genType>
62  genType load(extent_type const& TexelCoord, size_type Layer, size_type Level) const;
63 
65  template <typename genType>
66  void store(extent_type const& TexelCoord, size_type Layer, size_type Level, genType const& Texel);
67 
69  void clear();
70 
73  template <typename genType>
74  void clear(genType const& Texel);
75 
77  template <typename genType>
78  void clear(size_type Layer, size_type Level, genType const & Texel);
79 
80  private:
81  struct cache
82  {
83  std::uint8_t* Data;
84  extent_type Extent;
85 # ifndef NDEBUG
86  size_type Size;
87 # endif
88  };
89 
90  void build_cache();
91  size_type index_cache(size_type Layer, size_type Level) const;
92 
93  std::vector<cache> Caches;
94  };
95 }//namespace gli
96 
97 #include "./core/texture2d_array.inl"
Genetic texture class. It can support any target.
Definition: texture.hpp:12
Include to use 2d textures.
Namespace where all the classes and functions provided by GLI are exposed.
Definition: comparison.hpp:15
void store(extent_type const &TexelCoord, size_type Layer, size_type Level, genType const &Texel)
Write a texel to a texture. The texture format must be uncompressed.
texture2d_array()
Create an empty texture 2D array.
2d array texture
extent_type extent(size_type Level=0) const
Return the dimensions of a texture instance: width and height.
format
Texture data format.
Definition: format.hpp:12
2d texture
Definition: texture2d.hpp:13
texture2d operator[](size_type Layer) const
Create a view of the texture identified by Layer in the texture array.
void clear()
Clear the entire texture storage with zeros.
genType load(extent_type const &TexelCoord, size_type Layer, size_type Level) const
Fetch a texel from a texture. The texture format must be uncompressed.