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