VenomEngine
Cross-Platform Modern Graphics Engine
Loading...
Searching...
No Matches
Texture.h
Go to the documentation of this file.
1
8#pragma once
9
11
12#include <venom/vulkan/Buffer.h>
13#include <venom/vulkan/Image.h>
16
17namespace venom
18{
19namespace vulkan
20{
21
22class VulkanTextureResource : public vc::TextureResource
23{
24public:
25 VulkanTextureResource();
26
27 Image image;
28 vc::Vector<ImageView> imageViews;
29};
30
31class VulkanTexture : public vc::TextureImpl
32{
33public:
34 VulkanTexture();
35 ~VulkanTexture();
36
37 static VulkanTexture * GetDummyTexture();
38 static void SetDummyTexture(VulkanTexture * texture);
39
40 void _ResetResource() override;
41
42 vc::Error LoadImage(unsigned char * pixels, int width, int height, int channels) override;
43 vc::Error LoadImageRGBA(unsigned char * pixels, int width, int height, int channels) override;
44 vc::Error LoadImage(uint16_t * pixels, int width, int height, int channels) override;
45 vc::Error _InitDepthBuffer(int width, int height) override;
46 vc::Error _CreateAttachment(int width, int height, int imageCount, vc::ShaderVertexFormat format) override;
47 vc::Error _CreateReadWriteTexture(int width, int height, vc::ShaderVertexFormat format, int mipLevels, int arrayLayers) override;
48 vc::Error _CreateShadowMaps(int dimension) override;
49 vc::Error _CreateShadowCubeMaps(int dimension) override;
50 vc::Error _SaveImageToFile(const char* path) override;
51
52 vc::Error _SetMemoryAccess(const vc::TextureMemoryAccess access) override;
53
54 class VulkanGUITexture : public vc::TextureImpl::GUITexture
55 {
56 public:
57 VulkanGUITexture() = default;
58 ~VulkanGUITexture() override = default;
59
60 vc::Error _LoadTextureToGUI(vc::TextureImpl* impl, void** ptrToGuiTextureId) override;
61 vc::Error _UnloadTextureFromGUI(void* guiTextureId) override;
62 };
63 GUITexture * _NewGuiTextureInstance() override;
64
65 int GetHeight() const override;
66 int GetWidth() const override;
67 void SetDimensions(int width, int height) override;
68
69 bool HasTexture() const override { return _resource && GetImage().GetVkImage() != VK_NULL_HANDLE; }
70
71 inline const Image & GetImage() const { return _resource->As<VulkanTextureResource>()->image; }
72 inline Image & GetImage() { return _resource->As<VulkanTextureResource>()->image; }
73 inline const ImageView & GetImageView(int index = 0) const { return _resource->As<VulkanTextureResource>()->imageViews[index]; }
74 inline ImageView & GetImageView(int index = 0) { return _resource->As<VulkanTextureResource>()->imageViews[index]; }
75 inline ImageView & CreateImageView() const { return _resource->As<VulkanTextureResource>()->imageViews.emplace_back(); }
76};
77
78}
79}
Definition Texture.h:70
Definition Texture.h:54
Definition Image.h:19
void _ResetResource() override
Resets the resource, should be implemented by the final class, i.e. VulkanTextureResource.
Definition Texture.cc:49
Encapsulation of Vulkan for the front end of VenomEngine.
Definition Allocator.h:18
Contains the entirety of the code of the VenomEngine project.
Definition Callback.h:13