git push
This commit is contained in:
parent
1e81945b20
commit
25664db985
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
#include "resource_system.h"
|
||||
namespace api {
|
||||
using refl::type_info;
|
||||
class Asset : public Resource<Asset> {
|
||||
public:
|
||||
using Base = Resource<Asset>;
|
||||
|
||||
@ -31,7 +31,7 @@ namespace gen {
|
||||
*(T*)(ptr) = yyjson_get_str(val);
|
||||
}
|
||||
else {
|
||||
static_assert(false, "unknown json read type");
|
||||
//static_assert(false, "unknown json read type");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -52,7 +52,7 @@ namespace gen {
|
||||
return yyjson_mut_str(doc, ((T*)ptr)->data());
|
||||
}
|
||||
else {
|
||||
static_assert(false, "unknown json write type");
|
||||
//static_assert(false, "unknown json write type");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#pragma once
|
||||
#include "asset/asset.h"
|
||||
#include "shader.h"
|
||||
namespace api {
|
||||
class Material : public Asset {
|
||||
|
||||
@ -7,11 +7,13 @@ namespace api {
|
||||
class Mesh : public Asset {
|
||||
protected:
|
||||
RscHandle<Material> mMaterial;
|
||||
parray<Vertex> mVertices;
|
||||
parray<Vertex> mVertices;
|
||||
vector<uint32_t> mIndices;
|
||||
public:
|
||||
Mesh();
|
||||
void BeginLoad();
|
||||
template<Vertexs T>
|
||||
Mesh(vector<T>& vertices, vector<uint32_t>& indices);
|
||||
void BeginLoad() {};
|
||||
|
||||
public:
|
||||
Guid GetShaderGuid() {
|
||||
@ -30,4 +32,9 @@ namespace api {
|
||||
return mIndices;
|
||||
}
|
||||
};
|
||||
template<Vertexs T>
|
||||
inline Mesh::Mesh(vector<T>& vertices, vector<uint32_t>& indices)
|
||||
: Asset(type_info<Mesh>()), mVertices(vertices), mIndices(indices)
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -1,5 +1,5 @@
|
||||
#pragma once
|
||||
#include "asset/res/resource_handle.h"
|
||||
#include "asset/asset.h"
|
||||
namespace api {
|
||||
class ShaderProgram : public Resource<ShaderProgram> {};
|
||||
class Shader : public Asset {
|
||||
|
||||
@ -5,8 +5,9 @@
|
||||
// 顶点最多关联4个骨骼
|
||||
#define MAX_NUM_BONES_PER_VERTEX 4
|
||||
namespace api {
|
||||
using refl::type_info;
|
||||
struct Vertex {};
|
||||
template<typename T>
|
||||
concept Vertexs = requires {std::is_base_of_v<Vertex, T>; };
|
||||
struct PosVertex : public Vertex {
|
||||
UPROPERTY_gl({}, glVertexMeta{ 3, GL_FLOAT, GL_FALSE })
|
||||
UPROPERTY_vk({}, uint32_t{ VK_FORMAT_R32G32B32_SFLOAT })
|
||||
|
||||
@ -20,5 +20,10 @@ namespace api {
|
||||
public:
|
||||
virtual void Init() = 0;
|
||||
virtual void Shutdown() = 0;
|
||||
|
||||
virtual void SetStaticMesh(Mesh& mesh) = 0;
|
||||
virtual void DrawStaticMesh(Mesh& mesh) = 0;
|
||||
|
||||
virtual void LoadShader(Shader& shader) = 0;
|
||||
};
|
||||
}
|
||||
@ -0,0 +1,4 @@
|
||||
#include "render/asset/framebuffer.h"
|
||||
namespace api {
|
||||
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
#include "render/asset/material.h"
|
||||
namespace api {
|
||||
Material::Material() : Asset(type_info<Material>())
|
||||
{
|
||||
}
|
||||
Material::~Material()
|
||||
{
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
#include "render/asset/shader.h"
|
||||
namespace api {
|
||||
Shader::Shader() : Asset(type_info<Shader>())
|
||||
{
|
||||
}
|
||||
Shader::~Shader()
|
||||
{
|
||||
}
|
||||
void Shader::BeginLoad()
|
||||
{
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
#include "refl/refl.h"
|
||||
#include "refl/pch.h"
|
||||
namespace refl {
|
||||
template<typename T>
|
||||
class parray {
|
||||
@ -20,7 +20,7 @@ namespace refl {
|
||||
}
|
||||
else {
|
||||
for (int i = 0; i < m_count; i++) {
|
||||
new(ptr + i) Vertex(vec[i]);
|
||||
new(ptr + i) C(vec[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -32,7 +32,7 @@ namespace refl {
|
||||
~parray() {
|
||||
if (!m_count || !m_cls)
|
||||
return;
|
||||
auto dest = m_cls->vtable.Destruct;
|
||||
auto dest = m_cls->vtable.Destruct();
|
||||
if (dest) {
|
||||
for (int i = 0; i < m_count; i++) {
|
||||
dest((char*)m_ptr + (i * m_cls->size));
|
||||
|
||||
@ -5,6 +5,8 @@
|
||||
namespace vkn {
|
||||
class Backend;
|
||||
class VulkanWindow;
|
||||
using api::Mesh;
|
||||
using api::Shader;
|
||||
class VULKAN_API VulkanAPI : public api::RenderAPI {
|
||||
private:
|
||||
VulkanWindow& window;
|
||||
@ -14,5 +16,10 @@ namespace vkn {
|
||||
|
||||
void Init() override;
|
||||
void Shutdown() override;
|
||||
|
||||
void SetStaticMesh(Mesh& mesh)override;
|
||||
void DrawStaticMesh(Mesh& mesh)override;
|
||||
|
||||
void LoadShader(Shader& shader)override;
|
||||
};
|
||||
}
|
||||
@ -5,6 +5,9 @@
|
||||
#include "vkn/wrapper/instance_create.h"
|
||||
#include "vkn/wrapper/queue.h"
|
||||
namespace vkn {
|
||||
CommandWorker* Backend::TransferWorker;
|
||||
CommandWorker* Backend::RenderWorker;
|
||||
CommandWorker* Backend::PresentWorker;
|
||||
Backend::Backend(string_view appName) : mWorkerMap(GlobalPool())
|
||||
{
|
||||
InstanceCreator instanceCreator{};
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
#include "vkn/vulkan_api.h"
|
||||
#include "vkn/vulkan_window.h"
|
||||
#include "render/asset/mesh.h"
|
||||
namespace vkn {
|
||||
VulkanAPI::VulkanAPI() : window(*VulkanWindow::Ptr()), backend(VulkanEngineName)
|
||||
{
|
||||
@ -13,4 +14,16 @@ namespace vkn {
|
||||
{
|
||||
|
||||
}
|
||||
void VulkanAPI::SetStaticMesh(Mesh& mesh)
|
||||
{
|
||||
auto Indices = mesh.GetIndices();
|
||||
auto Vertices = mesh.GetVertices();
|
||||
|
||||
}
|
||||
void VulkanAPI::DrawStaticMesh(Mesh& mesh)
|
||||
{
|
||||
}
|
||||
void VulkanAPI::LoadShader(Shader& shader)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user