Add mesh class
- Fix compile errors due to not adding files to git
This commit is contained in:
@@ -166,6 +166,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\copium\core\Application.cpp" />
|
<ClCompile Include="src\copium\core\Application.cpp" />
|
||||||
<ClCompile Include="src\copium\buffer\Buffer.cpp" />
|
<ClCompile Include="src\copium\buffer\Buffer.cpp" />
|
||||||
|
<ClCompile Include="src\copium\mesh\Mesh.cpp" />
|
||||||
<ClCompile Include="src\copium\sampler\ColorAttachment.cpp" />
|
<ClCompile Include="src\copium\sampler\ColorAttachment.cpp" />
|
||||||
<ClCompile Include="src\copium\buffer\CommandBuffer.cpp" />
|
<ClCompile Include="src\copium\buffer\CommandBuffer.cpp" />
|
||||||
<ClCompile Include="src\copium\buffer\CommandBufferScoped.cpp" />
|
<ClCompile Include="src\copium\buffer\CommandBufferScoped.cpp" />
|
||||||
@@ -194,6 +195,7 @@
|
|||||||
<ClCompile Include="src\copium\mesh\VertexPassthrough.cpp" />
|
<ClCompile Include="src\copium\mesh\VertexPassthrough.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="src\copium\mesh\Mesh.h" />
|
||||||
<ClInclude Include="src\copium\sampler\DepthAttachment.h" />
|
<ClInclude Include="src\copium\sampler\DepthAttachment.h" />
|
||||||
<ClInclude Include="src\copium\core\Application.h" />
|
<ClInclude Include="src\copium\core\Application.h" />
|
||||||
<ClInclude Include="src\copium\sampler\ColorAttachment.h" />
|
<ClInclude Include="src\copium\sampler\ColorAttachment.h" />
|
||||||
@@ -225,7 +227,6 @@
|
|||||||
<ClInclude Include="src\copium\mesh\VertexPassthrough.h" />
|
<ClInclude Include="src\copium\mesh\VertexPassthrough.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="compile.bat" />
|
|
||||||
<None Include="res\shaders\passthrough.frag" />
|
<None Include="res\shaders\passthrough.frag" />
|
||||||
<None Include="res\shaders\passthrough.vert" />
|
<None Include="res\shaders\passthrough.vert" />
|
||||||
<None Include="res\shaders\shader.frag" />
|
<None Include="res\shaders\shader.frag" />
|
||||||
|
|||||||
@@ -15,102 +15,189 @@
|
|||||||
</Filter>
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\main.cpp">
|
<ClCompile Include="src\copium\core\Application.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\SwapChain.cpp">
|
<ClCompile Include="src\copium\buffer\Buffer.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\Texture2D.cpp">
|
<ClCompile Include="src\copium\sampler\ColorAttachment.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\Application.h">
|
<ClCompile Include="src\copium\buffer\CommandBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\buffer\CommandBufferScoped.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\core\DebugMessenger.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\sampler\DepthAttachment.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\pipeline\DescriptorPool.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\pipeline\DescriptorSet.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\util\FileSystem.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\buffer\Framebuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\sampler\Image.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\buffer\IndexBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\core\Instance.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\main.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\pipeline\Pipeline.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\pipeline\PipelineCreator.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\core\QueueFamilies.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\sampler\Sampler.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\pipeline\Shader.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\core\SwapChain.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\sampler\Texture2D.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\util\Timer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\buffer\UniformBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\mesh\Vertex.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\buffer\VertexBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\pipeline\VertexDescriptor.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\mesh\VertexPassthrough.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\copium\mesh\Mesh.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\DebugMessenger.h">
|
<ClInclude Include="src\copium\sampler\DepthAttachment.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Common.h">
|
<ClInclude Include="src\copium\core\Application.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\FileSystem.h">
|
<ClInclude Include="src\copium\sampler\ColorAttachment.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\SwapChain.h">
|
<ClInclude Include="src\copium\buffer\Buffer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\QueueFamilies.h">
|
<ClInclude Include="src\copium\buffer\CommandBuffer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Buffer.h">
|
<ClInclude Include="src\copium\util\Common.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\VulkanException.h">
|
<ClInclude Include="src\copium\core\DebugMessenger.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Instance.h">
|
<ClInclude Include="src\copium\pipeline\DescriptorSet.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Timer.h">
|
<ClInclude Include="src\copium\pipeline\DescriptorPool.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\UniformBuffer.h">
|
<ClInclude Include="src\copium\util\FileSystem.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Pipeline.h">
|
<ClInclude Include="src\copium\buffer\Framebuffer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\PipelineCreator.h">
|
<ClInclude Include="src\copium\sampler\Image.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Vertex.h">
|
<ClInclude Include="src\copium\buffer\IndexBuffer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\IndexBuffer.h">
|
<ClInclude Include="src\copium\pipeline\Pipeline.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\VertexBuffer.h">
|
<ClInclude Include="src\copium\pipeline\PipelineCreator.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\VertexDescriptor.h">
|
<ClInclude Include="src\copium\sampler\Sampler.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Texture2D.h">
|
<ClInclude Include="src\copium\pipeline\Shader.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\DescriptorSet.h">
|
<ClInclude Include="src\copium\sampler\Texture2D.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\DescriptorPool.h">
|
<ClInclude Include="src\copium\buffer\CommandBufferScoped.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\CommandBuffer.h">
|
<ClInclude Include="src\copium\buffer\UniformBuffer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\CommandBufferScoped.h">
|
<ClInclude Include="src\copium\core\Instance.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Shader.h">
|
<ClInclude Include="src\copium\core\QueueFamilies.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Image.h">
|
<ClInclude Include="src\copium\core\SwapChain.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\Framebuffer.h">
|
<ClInclude Include="src\copium\util\Timer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\VertexPassthrough.h">
|
<ClInclude Include="src\copium\mesh\Vertex.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\copium\buffer\VertexBuffer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\copium\pipeline\VertexDescriptor.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\copium\util\VulkanException.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\copium\mesh\VertexPassthrough.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\copium\mesh\Mesh.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="res\shaders\shader.frag" />
|
<None Include="res\shaders\shader.frag" />
|
||||||
<None Include="res\shaders\shader.vert" />
|
<None Include="res\shaders\shader.vert" />
|
||||||
<None Include="compile.bat">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</None>
|
|
||||||
<None Include="res\shaders\passthrough.frag" />
|
<None Include="res\shaders\passthrough.frag" />
|
||||||
<None Include="res\shaders\passthrough.vert" />
|
<None Include="res\shaders\passthrough.vert" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
glslc res/shaders/shader.vert -o res/shaders/vert.spv
|
|
||||||
glslc res/shaders/shader.frag -o res/shaders/frag.spv
|
|
||||||
pause
|
|
||||||
@@ -20,8 +20,8 @@ namespace Copium
|
|||||||
vkCmdBindVertexBuffers(commandBuffer, 0, bindingOffsets.size(), buffers.data(), bindingOffsets.data());
|
vkCmdBindVertexBuffers(commandBuffer, 0, bindingOffsets.size(), buffers.data(), bindingOffsets.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
void VertexBuffer::Update(uint32_t binding, void* data)
|
void VertexBuffer::UpdateStaging(uint32_t binding, void* data)
|
||||||
{
|
{
|
||||||
UpdateStaging(data, bindingOffsets[binding], bindingSizes[binding]);
|
Buffer::UpdateStaging(data, bindingOffsets[binding], bindingSizes[binding]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,6 +21,6 @@ namespace Copium
|
|||||||
VertexBuffer(Instance& instance, const VertexDescriptor& descriptor, int vertexCount);
|
VertexBuffer(Instance& instance, const VertexDescriptor& descriptor, int vertexCount);
|
||||||
|
|
||||||
void Bind(const CommandBuffer& commandBuffer);
|
void Bind(const CommandBuffer& commandBuffer);
|
||||||
void Update(uint32_t binding, void* data);
|
void UpdateStaging(uint32_t binding, void* data);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,8 +50,7 @@ namespace Copium
|
|||||||
InitializeTextureSampler();
|
InitializeTextureSampler();
|
||||||
InitializeUniformBuffer();
|
InitializeUniformBuffer();
|
||||||
InitializeDescriptorSets();
|
InitializeDescriptorSets();
|
||||||
InitializeVertexBuffer();
|
InitializeMesh();
|
||||||
InitializeIndexBuffer();
|
|
||||||
InitializeCommandBuffer();
|
InitializeCommandBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,22 +125,10 @@ namespace Copium
|
|||||||
graphicsPipelinePassthrough = std::make_unique<Pipeline>(*instance, creatorPassthrough);
|
graphicsPipelinePassthrough = std::make_unique<Pipeline>(*instance, creatorPassthrough);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::InitializeVertexBuffer()
|
void Application::InitializeMesh()
|
||||||
{
|
{
|
||||||
vertexBuffer = std::make_unique<VertexBuffer>(*instance, Vertex::GetDescriptor(), vertices.size());
|
mesh = std::make_unique<Mesh>(*instance, vertices, indices);
|
||||||
vertexBuffer->Update(0, (void*)vertices.data());
|
meshPassthrough = std::make_unique<Mesh>(*instance, verticesPassthrough, indicesPassthrough);
|
||||||
|
|
||||||
vertexBufferPassthrough = std::make_unique<VertexBuffer>(*instance, VertexPassthrough::GetDescriptor(), verticesPassthrough.size());
|
|
||||||
vertexBufferPassthrough->Update(0, (void*)verticesPassthrough.data());
|
|
||||||
}
|
|
||||||
|
|
||||||
void Application::InitializeIndexBuffer()
|
|
||||||
{
|
|
||||||
indexBuffer = std::make_unique<IndexBuffer>(*instance, indices.size());
|
|
||||||
indexBuffer->UpdateStaging((void*)indices.data());
|
|
||||||
|
|
||||||
indexBufferPassthrough = std::make_unique<IndexBuffer>(*instance, indicesPassthrough.size());
|
|
||||||
indexBufferPassthrough->UpdateStaging((void*)indicesPassthrough.data());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::InitializeCommandBuffer()
|
void Application::InitializeCommandBuffer()
|
||||||
@@ -158,13 +145,12 @@ namespace Copium
|
|||||||
|
|
||||||
UpdateUniformBuffer();
|
UpdateUniformBuffer();
|
||||||
|
|
||||||
vertexBuffer->Bind(*commandBuffer);
|
|
||||||
indexBuffer->Bind(*commandBuffer);
|
|
||||||
|
|
||||||
graphicsPipeline->SetDescriptorSet(0, *descriptorSet);
|
graphicsPipeline->SetDescriptorSet(0, *descriptorSet);
|
||||||
graphicsPipeline->BindDescriptorSets(*commandBuffer);
|
graphicsPipeline->BindDescriptorSets(*commandBuffer);
|
||||||
|
|
||||||
indexBuffer->Draw(*commandBuffer);
|
mesh->Bind(*commandBuffer);
|
||||||
|
mesh->Render(*commandBuffer);
|
||||||
|
|
||||||
framebuffer->Unbind(*commandBuffer);
|
framebuffer->Unbind(*commandBuffer);
|
||||||
|
|
||||||
instance->GetSwapChain().BeginFrameBuffer(*commandBuffer);
|
instance->GetSwapChain().BeginFrameBuffer(*commandBuffer);
|
||||||
@@ -172,9 +158,9 @@ namespace Copium
|
|||||||
graphicsPipelinePassthrough->Bind(*commandBuffer);
|
graphicsPipelinePassthrough->Bind(*commandBuffer);
|
||||||
graphicsPipelinePassthrough->SetDescriptorSet(0, *descriptorSetPassthrough);
|
graphicsPipelinePassthrough->SetDescriptorSet(0, *descriptorSetPassthrough);
|
||||||
graphicsPipelinePassthrough->BindDescriptorSets(*commandBuffer);
|
graphicsPipelinePassthrough->BindDescriptorSets(*commandBuffer);
|
||||||
vertexBufferPassthrough->Bind(*commandBuffer);
|
|
||||||
indexBufferPassthrough->Bind(*commandBuffer);
|
meshPassthrough->Bind(*commandBuffer);
|
||||||
indexBufferPassthrough->Draw(*commandBuffer);
|
meshPassthrough->Render(*commandBuffer);
|
||||||
|
|
||||||
instance->GetSwapChain().EndFrameBuffer(*commandBuffer);
|
instance->GetSwapChain().EndFrameBuffer(*commandBuffer);
|
||||||
commandBuffer->End();
|
commandBuffer->End();
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include "copium/buffer/UniformBuffer.h"
|
#include "copium/buffer/UniformBuffer.h"
|
||||||
#include "copium/buffer/VertexBuffer.h"
|
#include "copium/buffer/VertexBuffer.h"
|
||||||
#include "copium/core/Instance.h"
|
#include "copium/core/Instance.h"
|
||||||
|
#include "copium/mesh/Mesh.h"
|
||||||
#include "copium/pipeline/DescriptorPool.h"
|
#include "copium/pipeline/DescriptorPool.h"
|
||||||
#include "copium/pipeline/DescriptorSet.h"
|
#include "copium/pipeline/DescriptorSet.h"
|
||||||
#include "copium/pipeline/Pipeline.h"
|
#include "copium/pipeline/Pipeline.h"
|
||||||
@@ -17,20 +18,18 @@ namespace Copium
|
|||||||
CP_DELETE_COPY_AND_MOVE_CTOR(Application);
|
CP_DELETE_COPY_AND_MOVE_CTOR(Application);
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<Instance> instance;
|
std::unique_ptr<Instance> instance;
|
||||||
std::unique_ptr<Pipeline> graphicsPipeline;
|
std::unique_ptr<Framebuffer> framebuffer;
|
||||||
std::unique_ptr<Texture2D> texture2D;
|
std::unique_ptr<Texture2D> texture2D;
|
||||||
std::unique_ptr<UniformBuffer> shaderUniformBuffer;
|
std::unique_ptr<UniformBuffer> shaderUniformBuffer;
|
||||||
std::unique_ptr<DescriptorPool> descriptorPool;
|
std::unique_ptr<DescriptorPool> descriptorPool;
|
||||||
std::unique_ptr<DescriptorSet> descriptorSet;
|
std::unique_ptr<DescriptorSet> descriptorSet;
|
||||||
std::unique_ptr<VertexBuffer> vertexBuffer;
|
std::unique_ptr<DescriptorSet> descriptorSetPassthrough;
|
||||||
std::unique_ptr<IndexBuffer> indexBuffer;
|
std::unique_ptr<Pipeline> graphicsPipeline;
|
||||||
|
std::unique_ptr<Pipeline> graphicsPipelinePassthrough;
|
||||||
|
std::unique_ptr<Mesh> mesh;
|
||||||
|
std::unique_ptr<Mesh> meshPassthrough;
|
||||||
std::unique_ptr<CommandBuffer> commandBuffer;
|
std::unique_ptr<CommandBuffer> commandBuffer;
|
||||||
|
|
||||||
std::unique_ptr<Framebuffer> framebuffer;
|
|
||||||
std::unique_ptr<Pipeline> graphicsPipelinePassthrough;
|
|
||||||
std::unique_ptr<VertexBuffer> vertexBufferPassthrough;
|
|
||||||
std::unique_ptr<IndexBuffer> indexBufferPassthrough;
|
|
||||||
std::unique_ptr<DescriptorSet> descriptorSetPassthrough;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Application();
|
Application();
|
||||||
@@ -44,9 +43,9 @@ namespace Copium
|
|||||||
void InitializeUniformBuffer();
|
void InitializeUniformBuffer();
|
||||||
void InitializeDescriptorSets();
|
void InitializeDescriptorSets();
|
||||||
void InitializeGraphicsPipeline();
|
void InitializeGraphicsPipeline();
|
||||||
void InitializeVertexBuffer();
|
void InitializeMesh();
|
||||||
void InitializeIndexBuffer();
|
|
||||||
void InitializeCommandBuffer();
|
void InitializeCommandBuffer();
|
||||||
|
|
||||||
void RecordCommandBuffer();
|
void RecordCommandBuffer();
|
||||||
void UpdateUniformBuffer();
|
void UpdateUniformBuffer();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#include "copium/mesh/Mesh.h"
|
||||||
|
|
||||||
|
namespace Copium
|
||||||
|
{
|
||||||
|
void Mesh::Bind(const CommandBuffer& commandBuffer)
|
||||||
|
{
|
||||||
|
indexBuffer->Bind(commandBuffer);
|
||||||
|
vertexBuffer->Bind(commandBuffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Mesh::Render(const CommandBuffer& commandBuffer)
|
||||||
|
{
|
||||||
|
indexBuffer->Draw(commandBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "copium/buffer/IndexBuffer.h"
|
||||||
|
#include "copium/buffer/VertexBuffer.h"
|
||||||
|
#include "copium/buffer/CommandBuffer.h"
|
||||||
|
#include "copium/core/Instance.h"
|
||||||
|
#include "copium/util/Common.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
namespace Copium
|
||||||
|
{
|
||||||
|
class Mesh
|
||||||
|
{
|
||||||
|
CP_DELETE_COPY_AND_MOVE_CTOR(Mesh);
|
||||||
|
private:
|
||||||
|
std::unique_ptr<IndexBuffer> indexBuffer;
|
||||||
|
std::unique_ptr<VertexBuffer> vertexBuffer;
|
||||||
|
public:
|
||||||
|
template <typename T>
|
||||||
|
Mesh(Instance& instance, const std::vector<T>& vertices, const std::vector<uint16_t>& indices);
|
||||||
|
|
||||||
|
void Bind(const CommandBuffer& commandBuffer);
|
||||||
|
void Render(const CommandBuffer& commandBuffer);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
Mesh::Mesh(Instance& instance, const std::vector<T>& vertices, const std::vector<uint16_t>& indices)
|
||||||
|
{
|
||||||
|
indexBuffer = std::make_unique<IndexBuffer>(instance, indices.size());
|
||||||
|
indexBuffer->UpdateStaging((void*)indices.data());
|
||||||
|
vertexBuffer = std::make_unique<VertexBuffer>(instance, T::GetDescriptor(), vertices.size());
|
||||||
|
vertexBuffer ->UpdateStaging(0, (void*)vertices.data());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,8 +20,8 @@ namespace Copium
|
|||||||
|
|
||||||
VkSamplerCreateInfo createInfo{};
|
VkSamplerCreateInfo createInfo{};
|
||||||
createInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
createInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
||||||
createInfo.magFilter = VK_FILTER_LINEAR;
|
createInfo.magFilter = VK_FILTER_LINEAR; // TODO: Some way to control this
|
||||||
createInfo.minFilter = VK_FILTER_LINEAR;
|
createInfo.minFilter = VK_FILTER_LINEAR; // TODO: Some way to control this
|
||||||
createInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
createInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
createInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
createInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
createInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
createInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
|
||||||
|
|||||||
Reference in New Issue
Block a user