Aether3D Game Engine
RenderTexture.hpp
1 #ifndef RENDER_TEXTURE_H
2 #define RENDER_TEXTURE_H
3 
4 #if RENDERER_VULKAN
5 #include <vulkan/vulkan.h>
6 #endif
7 #include "TextureBase.hpp"
8 
9 namespace ae3d
10 {
12  class RenderTexture : public TextureBase
13  {
14  public:
16  enum class DataType
17  {
18  UByte,
19  Float
20  };
21 
23  static void DestroyTextures();
24 
26  DataType GetDataType() const { return dataType; }
27 
33  void Create2D( int width, int height, DataType dataType, TextureWrap wrap, TextureFilter filter );
34 
39  void CreateCube( int dimension, DataType dataType, TextureWrap wrap, TextureFilter filter );
40 
42  bool IsCube() const { return isCube; }
43 
44 #if RENDERER_OPENGL
45  unsigned GetFBO() const { return fboId; }
47 #endif
48 #if RENDERER_VULKAN
49  VkFramebuffer GetFrameBuffer() { return frameBuffer; }
50  VkImageView GetColorView() { return color.view; }
51 #endif
52 
53  private:
54 
55 #if RENDERER_OPENGL
56  unsigned rboId = 0;
57  unsigned fboId = 0;
58 #endif
59 #if RENDERER_VULKAN
60  VkFramebuffer frameBuffer;
61 
62  struct FrameBufferAttachment
63  {
64  VkImage image;
65  VkDeviceMemory mem;
66  VkImageView view;
67  };
68 
69  FrameBufferAttachment color;
70  FrameBufferAttachment depth;
71  VkImage image;
72  VkImageLayout imageLayout;
73  VkDeviceMemory deviceMemory;
74  VkImageView view;
75 #endif
76  DataType dataType = DataType::UByte;
77  bool isCube = false;
78  };
79 }
80 #endif
TextureFilter filter
Filtering mode.
Definition: TextureBase.hpp:110
TextureWrap wrap
Wrapping controls how coordinates outside 0-1 are interpreted.
Definition: TextureBase.hpp:108
Definition: AudioClip.hpp:4
void CreateCube(int dimension, DataType dataType, TextureWrap wrap, TextureFilter filter)
int width
Width in pixels.
Definition: TextureBase.hpp:102
DataType GetDataType() const
Definition: RenderTexture.hpp:26
static void DestroyTextures()
Destroys graphics API objects.
Render texture.
Definition: RenderTexture.hpp:12
bool IsCube() const
Definition: RenderTexture.hpp:42
void Create2D(int width, int height, DataType dataType, TextureWrap wrap, TextureFilter filter)
DataType
Data type.
Definition: RenderTexture.hpp:16
int height
Height in pixels.
Definition: TextureBase.hpp:104
Base class for textures.
Definition: TextureBase.hpp:54