#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 m_deviceBufferMap; //device buffer view std::map m_bufferViewMap; //device buffer accessor std::map m_bufferAccessorMap; //mesh asset resources std::map m_meshAssetMap; //image asset resources std::map m_imageAssetMap; //texture asset resources std::map m_textureAssetMap; //material asset resources std::map m_materialAssetMap; public: Device(); ~Device(); }; DV_CORE_END_NAMESPACE