Extra2D/include/renderer/rhi/rhi_buffer.h

132 lines
2.6 KiB
C
Raw Normal View History

#pragma once
#include <renderer/rhi/rhi_types.h>
namespace extra2d {
/**
* @brief RHI
*
* GPU
*/
class RHIBuffer {
public:
virtual ~RHIBuffer() = default;
/**
* @brief
* @return
*/
virtual BufferType getType() const = 0;
/**
* @brief
* @return
*/
virtual uint32_t getSize() const = 0;
/**
* @brief
* @param data
* @param size
* @param offset
* @return
*/
virtual bool update(const void* data, uint32_t size, uint32_t offset = 0) = 0;
/**
* @brief CPU
* @return nullptr
*/
virtual void* map() = 0;
/**
* @brief
*/
virtual void unmap() = 0;
/**
* @brief
* @return
*/
virtual bool isValid() const = 0;
};
/**
* @brief RHI
*
* GPU
*/
class RHITexture {
public:
virtual ~RHITexture() = default;
/**
* @brief
* @return
*/
virtual TextureType getType() const = 0;
/**
* @brief
* @return
*/
virtual TextureFormat getFormat() const = 0;
/**
* @brief
* @return
*/
virtual uint32_t getWidth() const = 0;
/**
* @brief
* @return
*/
virtual uint32_t getHeight() const = 0;
/**
* @brief Mipmap
* @return Mipmap
*/
virtual uint32_t getMipLevels() const = 0;
/**
* @brief
* @param data
* @param mipLevel Mipmap
* @return
*/
virtual bool update(const void* data, uint32_t mipLevel = 0) = 0;
/**
* @brief Mipmap
*/
virtual void generateMipmap() = 0;
/**
* @brief
* @param slot
*/
virtual void bind(uint32_t slot) = 0;
/**
* @brief
*/
virtual void unbind() = 0;
/**
* @brief
* @return
*/
virtual bool isValid() const = 0;
/**
* @brief
* @return
*/
virtual bool isRenderTarget() const = 0;
};
} // namespace extra2d