diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Graphics/Texture3D.h |
Diffstat (limited to 'Runtime/Graphics/Texture3D.h')
-rw-r--r-- | Runtime/Graphics/Texture3D.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Runtime/Graphics/Texture3D.h b/Runtime/Graphics/Texture3D.h new file mode 100644 index 0000000..8618e9b --- /dev/null +++ b/Runtime/Graphics/Texture3D.h @@ -0,0 +1,67 @@ +#pragma once + +#include "Texture.h" + + +class Texture3D : public Texture +{ +public: + REGISTER_DERIVED_CLASS (Texture3D, Texture) + DECLARE_OBJECT_SERIALIZE (Texture3D) + + Texture3D (MemLabelId label, ObjectCreationMode mode); + + virtual bool MainThreadCleanup (); + + + virtual void Reset (); + virtual void AwakeFromLoad (AwakeFromLoadMode awakeMode); + + void UploadTexture (bool dontUseSubImage); + bool InitTexture (int width, int height, int depth, TextureFormat format, bool mipMaps); + void UpdateImageData (bool rebuildMipMaps); + + UInt8* GetImageDataPointer() { return m_Data; } + UInt32 GetImageDataSize() const { return m_DataSize; } + int GetDepth() const { return m_Depth; } + TextureFormat GetTextureFormat() const { return m_Format; } + + bool GetPixels (ColorRGBAf* dest, int miplevel) const; + void SetPixels (int pixelCount, const ColorRGBAf* pixels, int miplevel); + + // Texture + virtual TextureDimension GetDimension () const { return kTexDim3D; } + virtual bool ExtractImage (ImageReference* image, int imageIndex = 0) const; + virtual int GetDataWidth() const { return m_Width; } + virtual int GetDataHeight() const { return m_Height; } + virtual bool HasMipMap () const { return m_MipMap; } + virtual int CountMipmaps() const; + #if ENABLE_PROFILER + virtual int GetStorageMemorySize() const { return m_DataSize; } + #endif + #if UNITY_EDITOR + virtual TextureFormat GetEditorUITextureFormat () const { return GetTextureFormat(); } + #endif + virtual int GetRuntimeMemorySize() const { return m_DataSize; } + +protected: + // Texture + virtual void UnloadFromGfxDevice(bool forceUnloadAll); + virtual void UploadToGfxDevice(); + +private: + UInt8* AllocateTextureData(int imageSize, TextureFormat format, bool initMemory); + void DestroyTexture(); + void RebuildMipMap (); + void DeleteGfxTexture(); + +private: + int m_Width; + int m_Height; + int m_Depth; + TextureFormat m_Format; + UInt8* m_Data; + UInt32 m_DataSize; + bool m_MipMap; + bool m_TextureUploaded; +}; |