SDLPainter 0.1.0
QPainter benzeri 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
15class Texture {
16 public:
17 Texture(IRenderer* renderer = nullptr) : mRenderer(renderer) {}
18 Texture(IRenderer* renderer, TextureHandle handle)
19 : mRenderer(renderer), mHandle(handle) {}
20
21 ~Texture() { Reset(); }
22
23 // Non-copyable
24 Texture(const Texture&) = delete;
25 Texture& operator=(const Texture&) = delete;
26
27 // Movable
28 Texture(Texture&& other) noexcept
29 : mRenderer(other.mRenderer), mHandle(other.mHandle) {
30 other.mRenderer = nullptr;
31 other.mHandle = kInvalidTexture;
32 }
33
34 Texture& operator=(Texture&& other) noexcept {
35 if (this != &other) {
36 Reset();
37 mRenderer = other.mRenderer;
38 mHandle = other.mHandle;
39 other.mRenderer = nullptr;
40 other.mHandle = kInvalidTexture;
41 }
42 return *this;
43 }
44
46 void Reset() {
47 if (mRenderer && mHandle != kInvalidTexture) {
48 mRenderer->DestroyTexture(mHandle);
49 }
50 mHandle = kInvalidTexture;
51 mRenderer = nullptr;
52 }
53
55 [[nodiscard]] TextureHandle Handle() const noexcept { return mHandle; }
56
58 [[nodiscard]] IRenderer* Owner() const noexcept { return mRenderer; }
59
61 [[nodiscard]] bool IsValid() const noexcept {
62 return mHandle != kInvalidTexture;
63 }
64
65 private:
66 IRenderer* mRenderer{nullptr};
67 TextureHandle mHandle{kInvalidTexture};
68};
69
70} // namespace sdl_painter
Backend-agnostik soyut renderer arayüzü.
Definition renderer.h:32
TextureHandle Handle() const noexcept
Ham handle'ı al.
Definition texture.h:55
IRenderer * Owner() const noexcept
Texture'ı oluşturan renderer'ı döner (yüklenmemişse nullptr).
Definition texture.h:58
bool IsValid() const noexcept
Geçerli bir texture mı?
Definition texture.h:61
void Reset()
Texture'ı serbest bırak.
Definition texture.h:46