69class VENOM_COMMON_API TextureImpl :
public PluginObjectImpl,
public GraphicsPluginObject,
public GraphicsCachedResourceHolder
73 virtual ~TextureImpl();
75 vc::Error SaveImageToFile(
const char * path);
76 vc::Error LoadImageFromFile(
const char * path);
77 vc::Error LoadImage(
const char * path,
int id,
char * bgraData,
unsigned int width,
unsigned int height);
78 vc::Error InitDepthBuffer(
int width,
int height);
89 vc::Error
CreateReadWriteTexture(
int width,
int height, vc::ShaderVertexFormat format,
int mipMapLevels,
int arrayLayers = 1);
90 vc::Error CreateAttachment(
int width,
int height,
int imageCount, vc::ShaderVertexFormat format);
91 vc::Error CreateShadowMaps(
int dimension);
92 vc::Error CreateShadowCubeMaps(
int dimension);
93 static const TextureImpl * GetDummyTexture();
94#ifdef VENOM_BINDLESS_TEXTURES
95 inline int GetTextureID()
const {
return _GetResourceToCache()->As<
TextureResource>()->GetTextureID(); }
97 virtual bool HasTexture()
const = 0;
99 vc::Error SetMemoryAccess(
const TextureMemoryAccess access);
101 virtual vc::Error LoadImage(
unsigned char * pixels,
int width,
int height,
int channels) = 0;
102 virtual vc::Error LoadImageRGBA(
unsigned char * pixels,
int width,
int height,
int channels) = 0;
103 virtual vc::Error LoadImage(uint16_t * pixels,
int width,
int height,
int channels) = 0;
104 inline void SetTexturePeakLuminance(
float peakLuminance) { __peakLuminance = peakLuminance; }
105 inline void SetTextureAverageLuminance(
float averageLuminance) { __averageLuminance = averageLuminance; }
106 inline const float & GetTexturePeakLuminance()
const {
return __peakLuminance; }
107 inline const float & GetTextureAverageLuminance()
const {
return __averageLuminance; }
108 inline const TextureMemoryAccess & GetMemoryAccess()
const {
return __memoryAccess; }
111 vc::Error GetGUITextureID(
void ** ptrToTextureId);
113 virtual int GetWidth()
const = 0;
114 virtual int GetHeight()
const = 0;
115 virtual void SetDimensions(
int width,
int height) = 0;
118 virtual vc::Error _InitDepthBuffer(
int width,
int height) = 0;
119 virtual vc::Error _CreateAttachment(
int width,
int height,
int imageCount, vc::ShaderVertexFormat format) = 0;
120 virtual vc::Error _SetMemoryAccess(
const TextureMemoryAccess access) = 0;
121 virtual vc::Error _CreateReadWriteTexture(
int width,
int height, vc::ShaderVertexFormat format,
int mipMapLevels,
int arrayLayers) = 0;
122 virtual vc::Error _CreateShadowMaps(
int dimension) = 0;
123 virtual vc::Error _CreateShadowCubeMaps(
int dimension) = 0;
124 virtual vc::Error _SaveImageToFile(
const char * path) = 0;
127 friend class Texture;
128 void __CreateDummyTexture();
131 TextureType _textureType;
132 TextureUsage _textureUsage;
139 class VENOM_COMMON_API GUITexture
143 virtual ~GUITexture() =
default;
145 void * GetTextureId();
147 vc::Error UnloadTextureFromGUI();
150 virtual vc::Error _UnloadTextureFromGUI(
void * guiTextureId) = 0;
151 virtual vc::Error _LoadTextureToGUI(
vc::TextureImpl * impl,
void ** ptrToGuiTextureId) = 0;
154 void * __guiTextureId;
157 virtual GUITexture * _NewGuiTextureInstance() = 0;
158 static void UnloadAllGuiTextures();
161 TextureMemoryAccess __memoryAccess;
162 float __peakLuminance, __averageLuminance;
164 UPtr<GUITexture> __guiTexture;
178class VENOM_COMMON_API Texture :
public PluginObjectImplWrapper
182 Texture(
const char * path);
183 Texture(
const char * path,
int id,
char * bgraData,
unsigned int width,
unsigned int height);
187 bool operator==(
const vc::SPtr<GraphicsCachedResource> & res)
const {
return _impl->As<
TextureImpl>()->
operator==(res.get()); }
188 inline vc::Error LoadImageFromFile(
const char * path) {
return _impl->As<
TextureImpl>()->LoadImageFromFile(path); }
189 inline vc::Error LoadImage(
const char * path,
int id,
char * bgraData,
unsigned int width,
unsigned int height) {
return _impl->As<
TextureImpl>()->LoadImage(path,
id, bgraData, width, height); }
190 inline void LoadImageFromCachedResource(
const SPtr<GraphicsCachedResource> res) { _impl->As<
TextureImpl>()->SetResource(res); }
191 inline vc::Error InitDepthBuffer(
int width,
int height) {
return _impl->As<
TextureImpl>()->InitDepthBuffer(width, height); }
192 inline vc::Error CreateAttachment(
int width,
int height,
int imageCount, vc::ShaderVertexFormat format) {
return _impl->As<
TextureImpl>()->CreateAttachment(width, height, imageCount, format); }
193 inline vc::Error CreateReadWriteTexture(
int width,
int height, vc::ShaderVertexFormat format,
int mipMapLevels,
int arraLayers = 1) {
return _impl->As<
TextureImpl>()->CreateReadWriteTexture(width, height, format, mipMapLevels, arraLayers); }
194 inline vc::Error CreateShadowMaps(
int dimension) {
return _impl->As<
TextureImpl>()->CreateShadowMaps(dimension); }
195 inline vc::Error CreateShadowCubeMaps(
int dimension) {
return _impl->As<
TextureImpl>()->CreateShadowCubeMaps(dimension); }
196 inline vc::Error SetMemoryAccess(
const TextureMemoryAccess access) {
return _impl->As<
TextureImpl>()->SetMemoryAccess(access); }
197 inline bool HasTexture()
const {
return _impl->As<
TextureImpl>()->HasTexture(); }
198 inline const vc::String & GetName() {
return _impl->As<
TextureImpl>()->GetResourceName(); }
199 inline const vc::String & GetShortName() {
return _impl->As<
TextureImpl>()->GetResourceShortName(); }
200 inline int GetWidth()
const {
return _impl->As<
TextureImpl>()->GetWidth(); }
201 inline int GetHeight()
const {
return _impl->As<
TextureImpl>()->GetHeight(); }
202 inline const TextureMemoryAccess & GetMemoryAccess()
const {
return _impl->As<
TextureImpl>()->GetMemoryAccess(); }
203 inline const float & GetTexturePeakLuminance()
const {
return _impl->As<
TextureImpl>()->GetTexturePeakLuminance(); }
204 inline const float & GetTextureAverageLuminance()
const {
return _impl->As<
TextureImpl>()->GetTextureAverageLuminance(); }
205 inline vc::Error SaveImageToFile(
const char * path) {
return _impl->As<
TextureImpl>()->SaveImageToFile(path); }
207 inline vc::Error GetGUITextureID(
void ** ptrToTextureId)
const {
return _impl->As<
TextureImpl>()->GetGUITextureID(ptrToTextureId); }
208#ifdef VENOM_BINDLESS_TEXTURES
209 inline int GetTextureID()
const {
return _impl->As<
TextureImpl>()->GetTextureID(); }
212 inline static void UnloadAllGuiTextures() { TextureImpl::UnloadAllGuiTextures(); }
214 friend class GraphicsApplication;
215 inline void __CreateDummyTexture() { _impl->As<
TextureImpl>()->__CreateDummyTexture(); }
vc::Error CreateReadWriteTexture(int width, int height, vc::ShaderVertexFormat format, int mipMapLevels, int arrayLayers=1)
Corresponds to Storage Images / Sampled Images for Vulkan for instance Switch between layouts or type...
Definition Texture.cc:401