Files
CosmicEngine/lib/All/JoltPhysics/TestFramework/Renderer/VK/TextureVK.h

36 lines
1.2 KiB
C++

// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
// SPDX-License-Identifier: MIT
#pragma once
#include <Renderer/Texture.h>
#include <vulkan/vulkan.h>
class RendererVK;
class TextureVK : public Texture
{
public:
/// Constructor, called by Renderer::CreateTextureVK
TextureVK(RendererVK *inRenderer, const Surface *inSurface); // Create a normal TextureVK
TextureVK(RendererVK *inRenderer, int inWidth, int inHeight); // Create a render target (depth only)
virtual ~TextureVK() override;
/// Bind texture to the pixel shader
virtual void Bind() const override;
VkImageView GetImageView() const { return mImageView; }
private:
void CreateImageViewAndDescriptorSet(VkFormat inFormat, VkImageAspectFlags inAspectFlags, VkSampler inSampler);
void TransitionImageLayout(VkCommandBuffer inCommandBuffer, VkImage inImage, VkFormat inFormat, VkImageLayout inOldLayout, VkImageLayout inNewLayout);
RendererVK * mRenderer;
VkImage mImage = VK_NULL_HANDLE;
VkDeviceMemory mImageMemory = VK_NULL_HANDLE;
VkImageView mImageView = VK_NULL_HANDLE;
VkDescriptorSet mDescriptorSet = VK_NULL_HANDLE;
};