Files
davinci2/source/core/include/device/dvc_device.h
T

70 lines
1.7 KiB
C++

#pragma once
#include "dvc_config.h"
#include "dvc_pre_declare.h"
DV_CORE_BEGIN_NAMESPACE
class DV_CORE_API Device
{
public:
void clear();
public:
DeviceBufferPtr newDeviceBuffer(size_t length);
DeviceBufferConstPtr getDeviceBuffer(int32_t id) const;
DeviceBufferViewPtr newDeviceBufferView(DeviceBufferConstPtr buffer, size_t offset, size_t length, size_t stride);
DeviceBufferViewPtr getDeviceBufferView(int32_t id) const;
DeviceBufferAccessorPtr newDeviceBufferAccessor(DeviceBufferViewConstPtr bufferView, size_t offset,
size_t count, ComponentType componentType, DataType dataType);
DeviceBufferAccessorPtr getDeviceBufferAccessor(int32_t id) const;
MeshPtr newMeshAsset(const std::string& name);
MeshPtr getMesh(int32_t id) const;
ImagePtr newImageAsset();
ImagePtr getImage(int32_t id) const;
TexturePtr newTextureAsset();
TexturePtr getTexture(int32_t id) const;
MaterialPtr newMaterialAsset();
MaterialPtr getMaterial(int32_t id) const;
private:
int32_t nextID() {
if (++m_currentID < 0) m_currentID = 0;
return m_currentID;
}
private:
int32_t m_currentID = 0;
//device buffer
std::map<int32_t, DeviceBufferPtr> m_deviceBufferMap;
//device buffer view
std::map<int32_t, DeviceBufferViewPtr> m_bufferViewMap;
//device buffer accessor
std::map<int32_t, DeviceBufferAccessorPtr> m_bufferAccessorMap;
//mesh asset resources
std::map<int32_t, MeshPtr> m_meshAssetMap;
//image asset resources
std::map<int32_t, ImagePtr> m_imageAssetMap;
//texture asset resources
std::map<int32_t, TexturePtr> m_textureAssetMap;
//material asset resources
std::map<int32_t, MaterialPtr> m_materialAssetMap;
public:
Device();
~Device();
};
DV_CORE_END_NAMESPACE