56 class Texture :
public std::enable_shared_from_this<Texture>
63 uint32_t
width()
const {
return _width; }
65 uint32_t
height()
const {
return _height; }
67 uint32_t
depth()
const {
return _depth; }
69 bool isArray()
const {
return _arrayLength > 0; }
81 void*
getLevel(uint32_t mipLevel)
const;
83 void setLevelData(uint32_t mipLevel,
const uint8_t* data,
size_t dataSize, uint32_t face = 0);
87 void*
getFaceData(uint32_t mipLevel, uint32_t face)
const;
88 void*
getArrayData(uint32_t mipLevel, uint32_t index)
const;
103 const std::string&
name()
const {
return _name; }
124 void updateNumLevels();
127 void recreateImpl(
bool enableUpload =
true);
132 void adjustVramSizeTracking(
DeviceVRAM& vram, int64_t size);
134 static uint32_t _nextId;
144 uint32_t _arrayLength;
159 bool _storage =
false;
163 uint32_t _numLevels = 0;
164 uint32_t _numLevelsRequested;
166 std::vector<std::vector<void*>> _levels;
167 std::vector<std::vector<size_t>> _levelDataSizes;
168 std::vector<std::vector<std::vector<uint8_t>>> _levelStorage;
169 std::vector<std::vector<bool>> _levelsUpdated;
171 std::unique_ptr<gpu::HardwareTexture> _impl;
173 bool _needsUpload =
false;
174 bool _needsMipmapsUpload =
false;
175 bool _mipmapsUploaded =
false;
185 uint32_t _renderVersionDirty = 0;
Abstract GPU interface for resource creation, state management, and draw submission.
size_t getLevelDataSize(uint32_t mipLevel, uint32_t face=0) const
Texture(GraphicsDevice *graphicsDevice, const TextureOptions &options=TextureOptions{})
GraphicsDevice * device() const
PixelFormat format() const
uint32_t getNumLevels() const
void setLevelData(uint32_t mipLevel, const uint8_t *data, size_t dataSize, uint32_t face=0)
void * getLevel(uint32_t mipLevel) const
void setMinFilter(FilterMode filter)
void setAddressW(AddressMode address)
const std::string & name() const
virtual void propertyChanged(TextureProperty flag)
gpu::HardwareTexture * impl() const
uint32_t getArrayLength() const
void setMipmaps(bool mipmaps)
void resize(uint32_t width, uint32_t height, uint32_t depth=1)
TextureEncoding encoding() const
void setAddressU(AddressMode address)
void setNeedsUpload(const bool needsUpload)
void * getFaceData(uint32_t mipLevel, uint32_t face) const
void setNeedsMipmapsUpload(const bool needsMipmapsUpload)
bool needsMipmapsUpload() const
void setMagFilter(FilterMode filter)
void setAddressV(AddressMode address)
void setEncoding(TextureEncoding value)
void * getArrayData(uint32_t mipLevel, uint32_t index) const
@ FILTER_LINEAR_MIPMAP_LINEAR
TextureProjection projection