//CFTTGraphicsBufferVulkan - [2020-04-13 11:57:46]
#ifndef _CFTTGRAPHICSBUFFERVULKAN_H_
#define _CFTTGRAPHICSBUFFERVULKAN_H_

#include "common.h"
#include "CFTTVulkanMemory.h"
#include "CFTTGraphicsBuffer.h"

/*
0020BE24 CFTTGraphicsBufferVulkan::CFTTGraphicsBufferVulkan(EFTTGraphicsBufferType,EFTTGraphicsBufferVolatility,uint)
0020BE68 CFTTGraphicsBufferVulkan::~CFTTGraphicsBufferVulkan()
0020BECC CFTTGraphicsBufferVulkan::~CFTTGraphicsBufferVulkan()
0020BEDA CFTTGraphicsBufferVulkan::Lock()
0020BF34 CFTTGraphicsBufferVulkan::Unlock(uint)
0020BFF8 CFTTGraphicsBufferVulkan::SetBuffer(void const*,uint)
0020BEF8 CFTTGraphicsBufferVulkan::CreateBuffer(int,void **)
0020BF74 CFTTGraphicsBufferVulkan::FlushMemory(int)
0020BE84 CFTTGraphicsBufferVulkan::FreeBuffer()

0x40
*/

class CFTTGraphicsBufferVulkan {
public:
  CFTTGraphicsBufferVulkan(EFTTGraphicsBufferType type, EFTTGraphicsBufferVolatility b, uint a3);
  ~CFTTGraphicsBufferVulkan();

  virtual void* Lock();                             //0020BEDA
  virtual void Unlock(uint a1);                     //0020BF34
  virtual void SetBuffer(void const* a1, uint a2);  //0020BFF8

  void* CreateBuffer(int a1, void** a2);  //0020BEF8
  void FlushMemory(int a1);              //0020BF74
  void FreeBuffer();                     //0020BE84

  //void* vptr_0; //虚拟函数表指针不需要定义
  EFTTGraphicsBufferType BufferType_4;
  int bType_8;
  uint dSize_C;
  CFTTVkBufferAllocation* BufAlloc_10;
  int field_14;
  int field_18;
  int field_1C;
  VkDeviceMemory* field_20;
  VkDeviceSize dOffset_24; //64bit
  int field_2C;
  int field_30;
  int field_34;
  void* pBuf_38;
  int byte_3C;
};

#endif  //_CFTTGRAPHICSBUFFERVULKAN_H_