Pioneer
Loading...
Searching...
No Matches
Texture.h
Go to the documentation of this file.
1// Copyright © 2008-2024 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef _TEXTURE_H
5#define _TEXTURE_H
6
7#include "RefCounted.h"
8#include "vector2.h"
9#include "vector3.h"
10#include <vector>
11
12namespace Graphics {
13
16
21
22 TEXTURE_DXT1, // data is expected to be pre-compressed
24
25 TEXTURE_DEPTH //precision chosen by renderer
26 };
27
33 };
34
39 };
40
42 void *posX;
43 void *negX;
44 void *posY;
45 void *negY;
46 void *posZ;
47 void *negZ;
48 };
49
50 // WARNING: TextureDescriptor is intended to be immutable. Internal values should not be changed!
52 public:
55 dataSize(1.0f),
56 texSize(1.0f),
58 generateMipmaps(false),
59 allowCompression(true),
63 {}
64
65 TextureDescriptor(TextureFormat _format, const vector3f &_dataSize, TextureSampleMode _sampleMode, bool _generateMipmaps, bool _allowCompression, bool _useAnisotropicFiltering, unsigned int _numberOfMipMaps, TextureType _textureType) :
66 format(_format),
67 dataSize(_dataSize),
68 texSize(1.0f),
69 sampleMode(_sampleMode),
70 generateMipmaps(_generateMipmaps),
71 allowCompression(_allowCompression),
72 useAnisotropicFiltering(_useAnisotropicFiltering),
73 numberOfMipMaps(_numberOfMipMaps),
74 type(_textureType)
75 {}
76
77 TextureDescriptor(TextureFormat _format, const vector3f &_dataSize, const vector2f &_texSize, TextureSampleMode _sampleMode, bool _generateMipmaps, bool _allowCompression, bool _useAnisotropicFiltering, unsigned int _numberOfMipMaps, TextureType _textureType) :
78 format(_format),
79 dataSize(_dataSize),
80 texSize(_texSize),
81 sampleMode(_sampleMode),
82 generateMipmaps(_generateMipmaps),
83 allowCompression(_allowCompression),
84 useAnisotropicFiltering(_useAnisotropicFiltering),
85 numberOfMipMaps(_numberOfMipMaps),
86 type(_textureType)
87 {}
88
90
91 // WARNING: these values shall not be changed
99 unsigned int numberOfMipMaps;
101 };
102
103 class Texture : public RefCounted {
104 public:
105 const TextureDescriptor &GetDescriptor() const { return m_descriptor; }
106
107 virtual void Update(const void *data, const vector2f &pos, const vector3f &dataSize, TextureFormat format, const unsigned int numMips = 0) = 0;
108 virtual void Update(const void *data, const vector3f &dataSize, TextureFormat format, const unsigned int numMips = 0)
109 {
110 Update(data, vector2f(0, 0), dataSize, format, numMips);
111 }
112 virtual void Update(const TextureCubeData &data, const vector3f &dataSize, TextureFormat format, const unsigned int numMips = 0) = 0;
113 typedef std::vector<void *> vecDataPtr;
114 virtual void Update(const vecDataPtr &data, const vector3f &dataSize, const TextureFormat format, const unsigned int numMips = 0) = 0;
116 // Call this function to update the texture's mipmaps.
117 // validMips is the number of mipmaps which already have valid data uploaded, and is mostly for internal use.
118 virtual void BuildMipmaps(const uint32_t validMips = 1) = 0;
119 virtual uint32_t GetTextureID() const = 0;
120 virtual uint32_t GetTextureMemSize() const = 0;
121
122 virtual void Bind() = 0;
123 virtual void Unbind() = 0;
124
125 virtual ~Texture() {}
126
127 protected:
128 Texture(const TextureDescriptor &descriptor) :
129 m_descriptor(descriptor) {}
130
131 private:
132 TextureDescriptor m_descriptor;
133 };
134
135} // namespace Graphics
136
137#endif
Definition: Texture.h:51
TextureDescriptor(TextureFormat _format, const vector3f &_dataSize, const vector2f &_texSize, TextureSampleMode _sampleMode, bool _generateMipmaps, bool _allowCompression, bool _useAnisotropicFiltering, unsigned int _numberOfMipMaps, TextureType _textureType)
Definition: Texture.h:77
bool allowCompression
Definition: Texture.h:97
vector2f texSize
Definition: Texture.h:94
bool generateMipmaps
Definition: Texture.h:96
TextureType type
Definition: Texture.h:100
unsigned int numberOfMipMaps
Definition: Texture.h:99
TextureFormat format
Definition: Texture.h:92
TextureDescriptor(TextureFormat _format, const vector3f &_dataSize, TextureSampleMode _sampleMode, bool _generateMipmaps, bool _allowCompression, bool _useAnisotropicFiltering, unsigned int _numberOfMipMaps, TextureType _textureType)
Definition: Texture.h:65
TextureSampleMode sampleMode
Definition: Texture.h:95
bool useAnisotropicFiltering
Definition: Texture.h:98
TextureDescriptor()
Definition: Texture.h:53
vector3f dataSize
Definition: Texture.h:93
vector2f GetOriginalSize() const
Definition: Texture.h:89
Definition: Texture.h:103
virtual void SetSampleMode(TextureSampleMode)=0
const TextureDescriptor & GetDescriptor() const
Definition: Texture.h:105
virtual void Unbind()=0
virtual uint32_t GetTextureMemSize() const =0
virtual ~Texture()
Definition: Texture.h:125
std::vector< void * > vecDataPtr
Definition: Texture.h:113
virtual void Update(const void *data, const vector2f &pos, const vector3f &dataSize, TextureFormat format, const unsigned int numMips=0)=0
virtual void Bind()=0
virtual uint32_t GetTextureID() const =0
virtual void Update(const void *data, const vector3f &dataSize, TextureFormat format, const unsigned int numMips=0)
Definition: Texture.h:108
Texture(const TextureDescriptor &descriptor)
Definition: Texture.h:128
virtual void BuildMipmaps(const uint32_t validMips=1)=0
virtual void Update(const TextureCubeData &data, const vector3f &dataSize, TextureFormat format, const unsigned int numMips=0)=0
virtual void Update(const vecDataPtr &data, const vector3f &dataSize, const TextureFormat format, const unsigned int numMips=0)=0
Definition: RefCounted.h:11
T y
Definition: vector2.h:26
T x
Definition: vector2.h:26
T y
Definition: vector3.h:20
T x
Definition: vector3.h:20
Definition: Background.h:14
TextureFormat
Definition: Texture.h:14
@ TEXTURE_RG_88
Definition: Texture.h:19
@ TEXTURE_RGB_888
Definition: Texture.h:18
@ TEXTURE_DXT1
Definition: Texture.h:22
@ TEXTURE_R8
Definition: Texture.h:20
@ TEXTURE_DXT5
Definition: Texture.h:23
@ TEXTURE_NONE
Definition: Texture.h:15
@ TEXTURE_DEPTH
Definition: Texture.h:25
@ TEXTURE_RGBA_8888
Definition: Texture.h:17
TextureType
Definition: Texture.h:35
@ TEXTURE_2D
Definition: Texture.h:36
@ TEXTURE_CUBE_MAP
Definition: Texture.h:37
@ TEXTURE_2D_ARRAY
Definition: Texture.h:38
TextureSampleMode
Definition: Texture.h:28
@ NEAREST_REPEAT
Definition: Texture.h:32
@ NEAREST_CLAMP
Definition: Texture.h:30
@ LINEAR_CLAMP
Definition: Texture.h:29
@ LINEAR_REPEAT
Definition: Texture.h:31
Definition: Texture.h:41
void * negY
Definition: Texture.h:45
void * negZ
Definition: Texture.h:47
void * posX
Definition: Texture.h:42
void * posZ
Definition: Texture.h:46
void * negX
Definition: Texture.h:43
void * posY
Definition: Texture.h:44
vector2< float > vector2f
Definition: vector2.h:133