RavEngine
Loading...
Searching...
No Matches
MTLTexture.hpp
1#pragma once
2#include <RGL/Types.hpp>
3#include <RGL/Texture.hpp>
4#include "MTLObjCCompatLayer.hpp"
5#include <RGL/Span.hpp>
6#include <memory>
7#include <vector>
8
9namespace RGL{
10struct DeviceMTL;
11
12struct TextureMTL : public ITexture{
13 OBJC_ID(CAMetalDrawable) drawable = nullptr;
14 OBJC_ID(MTLTexture) texture = nullptr;
15
16 static OBJC_ID(MTLTexture) ViewToTexture(const TextureView& view);
17
18 // default constructor, don't explicity use
19 TextureMTL() : ITexture({0,0}){}
20 virtual ~TextureMTL();
21
22 TextureMTL(decltype(drawable), const Dimension&);
23 TextureMTL(const std::shared_ptr<DeviceMTL>, const TextureConfig& config, const TextureUploadData&);
24 TextureMTL(const std::shared_ptr<DeviceMTL>, const TextureConfig& config);
25
26 Dimension GetSize() const;
27
28 TextureView GetDefaultView() const final;
29 TextureView GetViewForMip(uint32_t mip) const final;
30
31 RGLCustomTextureViewPtr MakeCustomTextureView(const CustomTextureViewConfig& config) const;
32
33 uint8_t GetNumMips() const final;
34
35 std::vector<OBJC_ID(MTLTexture)> mipTextures;
36
37 uint32_t globalIndex = 0;
38
39private:
40 std::shared_ptr<DeviceMTL> owningDevice;
41};
42
44
45 TextureView GetView() const;
46};
47
48}
Definition Texture.hpp:152
Definition Texture.hpp:168
Definition Texture.hpp:157
Definition MTLTexture.hpp:43
Definition Texture.hpp:25
Definition Texture.hpp:138
Definition MTLTexture.hpp:12
Definition Texture.hpp:162
Definition Texture.hpp:43