增加材质和纹理

This commit is contained in:
2025-10-26 20:07:32 +08:00
parent f847154ba2
commit 8db6f7b115
45 changed files with 1124 additions and 281 deletions
+3 -2
View File
@@ -10,6 +10,7 @@ public:
void init(size_t _length);
void clear(void);
int32_t getID(void) const { return m_id; }
size_t length(void) const { return m_length; }
const uint8_t* ptr(size_t offseet) const {
@@ -20,12 +21,12 @@ public:
return m_ptr + offseet;
}
private:
int32_t m_id;
uint8_t* m_ptr;
size_t m_length;
public:
DeviceBuffer();
DeviceBuffer(size_t _length);
DeviceBuffer(int32_t id, size_t _length);
~DeviceBuffer();
};
@@ -7,6 +7,8 @@ DV_CORE_BEGIN_NAMESPACE
class DV_CORE_API DeviceBufferAccessor
{
public:
int32_t getID(void) const { return m_id; }
const DeviceBufferViewConstPtr getBufferView(void) const {
return m_bufferView;
}
@@ -39,6 +41,7 @@ public:
private:
int32_t m_id;
DeviceBufferViewConstPtr m_bufferView;
size_t m_offset;
size_t m_count;
@@ -48,7 +51,7 @@ private:
size_t m_elementSize;
public:
DeviceBufferAccessor(DeviceBufferViewConstPtr bufferView, size_t offset, size_t count, ComponentType componentType, DataType dataType);
DeviceBufferAccessor(int32_t id, DeviceBufferViewConstPtr bufferView, size_t offset, size_t count, ComponentType componentType, DataType dataType);
~DeviceBufferAccessor();
};
+4 -1
View File
@@ -8,6 +8,8 @@ DV_CORE_BEGIN_NAMESPACE
class DV_CORE_API DeviceBufferView
{
public:
int32_t getID(void) const { return m_id; }
const DeviceBufferConstPtr getBuffer(void) const {
return m_buffer;
}
@@ -25,13 +27,14 @@ public:
}
private:
int32_t m_id;
DeviceBufferConstPtr m_buffer;
size_t m_offset;
size_t m_length;
size_t m_stride;
public:
DeviceBufferView(DeviceBufferConstPtr buffer, size_t offset, size_t length, size_t stride);
DeviceBufferView(int32_t id, DeviceBufferConstPtr buffer, size_t offset, size_t length, size_t stride);
~DeviceBufferView();
};
+69
View File
@@ -0,0 +1,69 @@
#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=0);
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