MOS
texture.hpp
1 #pragma once
2 
3 #include <atomic>
4 #include <chrono>
5 #include <initializer_list>
6 #include <memory>
7 #include <string>
8 #include <vector>
9 
10 #include <gli/format.hpp>
11 #include <gli/gli.hpp>
12 
13 #include <mos/core/tracked_container.hpp>
14 #include <mos/core/id.hpp>
15 
16 namespace mos::gfx {
17 
18 class Texture;
19 
21 class Texture {
22 public:
23  using TimePoint = std::chrono::time_point<std::chrono::system_clock,
24  std::chrono::nanoseconds>;
25  enum class Wrap { Repeat, Clamp };
26  enum class Filter { Linear, Closest };
27 
28  Texture(const Filter &filter = Filter::Linear,
29  const Wrap &wrap = Wrap::Repeat, bool generate_mipmaps = true);
30 
31  auto id() const -> int;
32 
33  bool generate_mipmaps;
34  Filter filter;
35  Wrap wrap;
36  TimePoint modified;
37 
38 private:
39  Id<Texture> id_;
40 };
41 } // namespace mos::gfx
Definition: id.hpp:8
Definition: assets.hpp:17
Texture base.
Definition: texture.hpp:21