TextureVK.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2024 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Renderer/Texture.h>
  6. #include <vulkan/vulkan.h>
  7. class RendererVK;
  8. class TextureVK : public Texture
  9. {
  10. public:
  11. /// Constructor, called by Renderer::CreateTextureVK
  12. TextureVK(RendererVK *inRenderer, const Surface *inSurface); // Create a normal TextureVK
  13. TextureVK(RendererVK *inRenderer, int inWidth, int inHeight); // Create a render target (depth only)
  14. virtual ~TextureVK() override;
  15. /// Bind texture to the pixel shader
  16. virtual void Bind() const override;
  17. VkImageView GetImageView() const { return mImageView; }
  18. private:
  19. void CreateImageViewAndDescriptorSet(VkFormat inFormat, VkImageAspectFlags inAspectFlags, VkSampler inSampler);
  20. void TransitionImageLayout(VkCommandBuffer inCommandBuffer, VkImage inImage, VkFormat inFormat, VkImageLayout inOldLayout, VkImageLayout inNewLayout);
  21. RendererVK * mRenderer;
  22. VkImage mImage = VK_NULL_HANDLE;
  23. VkDeviceMemory mImageMemory = VK_NULL_HANDLE;
  24. VkImageView mImageView = VK_NULL_HANDLE;
  25. VkDescriptorSet mDescriptorSet = VK_NULL_HANDLE;
  26. };