Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
VKBuffer.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "Buffer.h"
7#include "VKRenderer.h"
8#include <vulkan/vulkan.h>
9
10class VKBuffer : public Buffer
11{
12public:
13 VKBuffer(size_t size, Buffer::Type type, Buffer::Usage usage, VkMemoryPropertyFlags properties);
14 virtual ~VKBuffer();
15
16 void map(size_t size = VK_WHOLE_SIZE, size_t offset = 0) override;
17 void unmap() override;
18 void flush(size_t size = VK_WHOLE_SIZE, size_t offset = 0) override;
19
20 operator VkBuffer() noexcept;
21 operator VkBuffer() const noexcept;
22
23private:
24 uint32_t find_memory_type(uint32_t type, VkMemoryPropertyFlags properties) const;
25
26 VkBuffer handle_;
27 VkDeviceMemory memory_;
28
29 VKRenderer* renderer_;
30};
缓冲区.
Definition: Buffer.h:13
Type
缓冲区类型. 表明了缓冲区的用途.
Definition: Buffer.h:19
Usage
缓冲区使用方式.
Definition: Buffer.h:29
Definition: VKBuffer.h:11
void unmap() override
取消映射.
Definition: VKBuffer.cpp:58
void map(size_t size=VK_WHOLE_SIZE, size_t offset=0) override
映射缓冲区到内存.
Definition: VKBuffer.cpp:51
void flush(size_t size=VK_WHOLE_SIZE, size_t offset=0) override
刷新映射缓冲区.
Definition: VKBuffer.cpp:67
Definition: VKRenderer.h:14