Mountain  1.0.0
Simple C++ 2D Game Framework
gpu_texture.hpp
1 #pragma once
2 
3 #include <Maths/vector2i.hpp>
4 
5 #include "Mountain/core.hpp"
6 #include "Mountain/rendering/graphics.hpp"
8 
9 namespace Mountain::Graphics
10 {
12  struct MOUNTAIN_API GpuTexture
13  {
16  void Create();
17 
20  void Delete();
21 
23  void Recreate();
24 
35  void CreateFrom(uint32_t originalTextureId, InternalFormat newInternalFormat, uint32_t minMipmapLevel, uint32_t mipmapLevels);
36 
47  void CreateFrom(GpuTexture originalGpuTexture, InternalFormat newInternalFormat, uint32_t minMipmapLevel, uint32_t mipmapLevels);
48 
56  void SetStorage(InternalFormat internalFormat, Vector2i size, int32_t mipmapLevels = 1) const;
57 
66  void SetSubData(
67  Vector2i offset,
68  Vector2i size,
69  Format dataFormat,
70  DataType dataType,
71  const void* data,
72  int32_t mipmapLevel = 0
73  ) const;
74 
85  void SetData(
86  InternalFormat internalFormat,
87  Vector2i size,
88  Format dataFormat,
89  DataType dataType,
90  const void* data,
91  int32_t mipmapLevel = 0
92  ) const;
93 
95  void GenerateMipmap() const;
96 
102  void SetDebugName(std::string_view name) const;
103 
106  [[nodiscard]]
107  bool_t GetImmutable() const;
108 
110  [[nodiscard]]
111  MagnificationFilter GetMinFilter() const;
113  void SetMinFilter(MagnificationFilter newMinFilter) const;
114 
116  [[nodiscard]]
117  MagnificationFilter GetMagFilter() const;
119  void SetMagFilter(MagnificationFilter newMagFilter) const;
120 
122  [[nodiscard]]
123  Wrapping GetWrappingHorizontal() const;
125  void SetWrappingHorizontal(Wrapping newWrappingHorizontal) const;
126 
128  [[nodiscard]]
129  Wrapping GetWrappingVertical() const;
131  void SetWrappingVertical(Wrapping newWrappingVertical) const;
132 
134  [[nodiscard]]
135  Color GetBorderColor() const;
137  void SetBorderColor(Color newBorderColor) const;
138 
139  [[nodiscard]]
140  uint32_t GetId() const;
141 
142  [[nodiscard]]
143  explicit operator uint32_t() const;
144 
145  private:
146  uint32_t m_Id = 0;
147  };
148 }
Low-level graphics API.
Definition: gpu_buffer.hpp:9
Defines multiple color structs.
Low-level interface for OpenGL textures.
Definition: gpu_texture.hpp:12
The Color struct represents a color in RGBA color space.
Definition: color.hpp:26