Cogs.Rendering
Loading...
Searching...
No Matches
TextureData.h
Go to the documentation of this file.
1#pragma once
2
3#include "DataFormat.h"
4
5#include "Foundation/Memory/MemoryBuffer.h"
6
7namespace Cogs
8{
12 uint32_t COGSRENDERING_DLL_API getMipLevels(const uint32_t width, const uint32_t height);
13 uint32_t COGSRENDERING_DLL_API getMipSize(uint32_t size, uint32_t level);
14
16 {
17 Unknown = 0,
18 Buffer,
31 };
33
35 {
36 TextureDescription() = default;
37
42
43 ResourceDimensions target = ResourceDimensions::Texture2D; //<! Type of texture this describes.
44 uint32_t width = 0; //<! Pixel width of the texture.
45 uint32_t height = 0; //<! Height of texture in pixels.
46 uint32_t depth = 1;
47 uint32_t layers = 1; //<! Number of entries in a texture array.
48 uint32_t faces = 1; //<! Number of faces in a cube-map.
49 uint32_t levels = 1; //<! Number of mipmap levels.
50 uint32_t samples = 1; //<! Defines the number of samples a multisample texture will have.
51 TextureFormat format = TextureFormat::Unknown; //<! Pixel format of this texture.
53 };
54
56 {
57 TextureData() = default;
58 TextureData(TextureExtent extent, size_t layers, size_t faces, size_t levels, TextureFormat format, Memory::Allocator * allocator = Memory::Allocator::defaultAllocator());
59 TextureData(const void * data, TextureExtent extent, size_t layers, size_t faces, size_t levels, TextureFormat format);
60
61 TextureData(TextureData &&) = default;
63
64 void init(TextureExtent extent, size_t layers, size_t faces, size_t levels, TextureFormat format, Memory::Allocator * allocator = Memory::Allocator::defaultAllocator());
65 void initExternal(intptr_t external);
66 void initExternal(const void ** data, size_t layers, size_t faces, size_t levels);
67 void clearData();
68
69 void * getData(size_t layer, size_t face, size_t level);
70 const void * getData(size_t layer, size_t face, size_t level) const;
71
72 void * getData() { return getData(0, 0, 0); }
73 const void * getData() const { return getData(0, 0, 0); }
74
75 size_t getPitch(size_t level) const;
76 size_t getLevelSize(size_t level) const;
77 size_t getFaceSize(size_t baseLevel, size_t maxLevel) const;
78 size_t getLayerSize(size_t baseFace, size_t maxFace, size_t baseLevel, size_t maxLevel) const;
79 size_t getSize() const;
80
81 TextureExtent getExtent(size_t level) const;
82 TextureExtent getBlockCount(size_t level) const;
83
84 size_t getOffset(size_t layer, size_t face, size_t level) const;
85 void initOffsets(const void * data);
86
88
89 size_t layers = 0;
90 size_t faces = 0;
91 size_t levels = 0;
92
93 size_t blockSize = 0;
97
98 Collections::SmallVector<const void *, 16> offsets;
99 Memory::MemoryBuffer data;
100 intptr_t externalHandle = 0;
101 };
102}
#define COGSRENDERING_DLL_API
Definition: Base.h:20
Definition: Base.h:24
@ Unknown
Unknown type of graphics device.
Format TextureFormat
Definition: DataFormat.h:246
uint32_t getMipSize(uint32_t size, uint32_t level)
Definition: TextureData.cpp:52
ResourceDimensions
Definition: TextureData.h:16
uint32_t COGSRENDERING_DLL_API getSize(const Cogs::VertexFormat &vertexFormat)
Definition: VertexFormat.h:82
const char * getResourceDimensionsName(ResourceDimensions target)
Definition: TextureData.cpp:9
size_t getComponents(TextureFormat format)
Definition: TextureData.cpp:42
Format
Definition: DataFormat.h:22
TextureExtent getBlockExtent(TextureFormat format)
Definition: TextureData.cpp:37
size_t getBlockSize(TextureFormat format)
Definition: TextureData.cpp:32
uint32_t getMipLevels(const uint32_t width, const uint32_t height)
Definition: TextureData.cpp:47
Definition: TextureData.h:56
TextureData(TextureData &&)=default
void * getData()
Definition: TextureData.h:72
Memory::MemoryBuffer data
Definition: TextureData.h:99
TextureExtent blockExtent
Definition: TextureData.h:94
const void * getData() const
Definition: TextureData.h:73
Collections::SmallVector< const void *, 16 > offsets
Definition: TextureData.h:98
TextureData()=default
TextureExtent blockCount
Definition: TextureData.h:95
TextureData & operator=(TextureData &&)=default
TextureExtent extent
Definition: TextureData.h:96
Definition: TextureData.h:35
uint32_t width
Definition: TextureData.h:44
uint32_t height
Definition: TextureData.h:45
uint32_t depth
Definition: TextureData.h:46
uint32_t layers
Definition: TextureData.h:47
COGSRENDERING_DLL_API size_t estimateMemorySize() const
Attempts to estimate the amount of memory a texture with these attributes will require.
Definition: TextureData.cpp:57
uint32_t samples
Definition: TextureData.h:50
TextureFlags::ETextureFlags flags
Definition: TextureData.h:52
ResourceDimensions target
Definition: TextureData.h:43
TextureFormat format
Definition: TextureData.h:51
uint32_t levels
Definition: TextureData.h:49
uint32_t faces
Definition: TextureData.h:48
Definition: DataFormat.h:249
ETextureFlags
Texture flags enumeration.
Definition: Flags.h:114
@ Default
Default usage, the texture can be loaded once and bound and sampled in shaders.
Definition: Flags.h:116