SDLPainter 1.4.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
texture.h
1#pragma once
2
3#include "sdl_painter/renderer.h"
4
5namespace sdl_painter {
6
14class Texture {
15 public:
16 explicit Texture(IRenderer* renderer = nullptr) : mRenderer(renderer) {}
17 Texture(IRenderer* renderer, TextureHandle handle)
18 : mRenderer(renderer), mHandle(handle) {}
19
20 ~Texture() { Reset(); }
21
22 // Non-copyable
23 Texture(const Texture&) = delete;
24 Texture& operator=(const Texture&) = delete;
25
26 // Movable
27 Texture(Texture&& other) noexcept
28 : mRenderer(other.mRenderer), mHandle(other.mHandle) {
29 other.mRenderer = nullptr;
30 other.mHandle = kInvalidTexture;
31 }
32
33 Texture& operator=(Texture&& other) noexcept {
34 if (this != &other) {
35 Reset();
36 mRenderer = other.mRenderer;
37 mHandle = other.mHandle;
38 other.mRenderer = nullptr;
39 other.mHandle = kInvalidTexture;
40 }
41 return *this;
42 }
43
45 void Reset() {
46 if (mRenderer && mHandle != kInvalidTexture) {
47 mRenderer->DestroyTexture(mHandle);
48 }
49 mHandle = kInvalidTexture;
50 mRenderer = nullptr;
51 }
52
54 [[nodiscard]] TextureHandle Handle() const noexcept { return mHandle; }
55
57 [[nodiscard]] IRenderer* Owner() const noexcept { return mRenderer; }
58
60 [[nodiscard]] bool IsValid() const noexcept {
61 return mHandle != kInvalidTexture;
62 }
63
64 private:
65 IRenderer* mRenderer{nullptr};
66 TextureHandle mHandle{kInvalidTexture};
67};
68
69} // namespace sdl_painter
Backend-agnostik soyut renderer arayüzü.
Definition renderer.h:77
TextureHandle Handle() const noexcept
Ham handle'ı al.
Definition texture.h:54
IRenderer * Owner() const noexcept
Texture'ı oluşturan renderer'ı döner (yüklenmemişse nullptr).
Definition texture.h:57
bool IsValid() const noexcept
Geçerli bir texture mı?
Definition texture.h:60
void Reset()
Texture'ı serbest bırak.
Definition texture.h:45