made a model overload for cmd->bind(), added FPS counter to screen
This commit is contained in:
parent
384c393e16
commit
538d3a7dcb
@ -43,7 +43,6 @@ Model::Model(vk::PhysicalDevice phys_dev, vk::Device dev, const std::string& fna
|
|||||||
index_buffer = std::make_unique<Buffer>(phys_dev, dev, indices.size()*sizeof(uint16_t),
|
index_buffer = std::make_unique<Buffer>(phys_dev, dev, indices.size()*sizeof(uint16_t),
|
||||||
vk::BufferUsageFlagBits::eIndexBuffer, vk::MemoryPropertyFlagBits::eHostCoherent | vk::MemoryPropertyFlagBits::eHostVisible);
|
vk::BufferUsageFlagBits::eIndexBuffer, vk::MemoryPropertyFlagBits::eHostCoherent | vk::MemoryPropertyFlagBits::eHostVisible);
|
||||||
index_buffer->upload(reinterpret_cast<uint8_t*>(indices.data()), static_cast<vk::DeviceSize>(indices.size()*sizeof(uint16_t)));
|
index_buffer->upload(reinterpret_cast<uint8_t*>(indices.data()), static_cast<vk::DeviceSize>(indices.size()*sizeof(uint16_t)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Model::initVertices(Node* node, const tinygltf::Primitive& prim) {
|
void Model::initVertices(Node* node, const tinygltf::Primitive& prim) {
|
||||||
|
|||||||
@ -2,6 +2,8 @@
|
|||||||
#include <Renderer/Pipeline.hpp>
|
#include <Renderer/Pipeline.hpp>
|
||||||
#include <Renderer/VertexBuffer.hpp>
|
#include <Renderer/VertexBuffer.hpp>
|
||||||
|
|
||||||
|
#include <Model/Model.hpp>
|
||||||
|
|
||||||
#include <Memory/Buffer.hpp>
|
#include <Memory/Buffer.hpp>
|
||||||
#include <Memory/Image.hpp>
|
#include <Memory/Image.hpp>
|
||||||
|
|
||||||
@ -73,6 +75,11 @@ void CommandBuffer::bind(const VertexBuffer& vertex_buffer, uint32_t binding) {
|
|||||||
command_buffer.bindVertexBuffers(binding, vertex_buffer.buffer->buffer, offsets);
|
command_buffer.bindVertexBuffers(binding, vertex_buffer.buffer->buffer, offsets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CommandBuffer::bind(std::shared_ptr<Model> model) {
|
||||||
|
bind(*model->vertex_buffer);
|
||||||
|
command_buffer.bindIndexBuffer(*model->index_buffer, 0, vk::IndexType::eUint16);
|
||||||
|
}
|
||||||
|
|
||||||
void CommandBuffer::draw(uint32_t vertex_count, uint32_t instance_count, uint32_t first_vertex, uint32_t first_instance) {
|
void CommandBuffer::draw(uint32_t vertex_count, uint32_t instance_count, uint32_t first_vertex, uint32_t first_instance) {
|
||||||
command_buffer.draw(vertex_count, instance_count, first_vertex, first_instance);
|
command_buffer.draw(vertex_count, instance_count, first_vertex, first_instance);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,7 @@ struct Image;
|
|||||||
struct GraphicsPipeline;
|
struct GraphicsPipeline;
|
||||||
struct ComputePipeline;
|
struct ComputePipeline;
|
||||||
struct VertexBuffer;
|
struct VertexBuffer;
|
||||||
|
struct Model;
|
||||||
|
|
||||||
struct CommandBuffer {
|
struct CommandBuffer {
|
||||||
CommandBuffer(vk::Device dev, u32 queue_family);
|
CommandBuffer(vk::Device dev, u32 queue_family);
|
||||||
@ -28,6 +29,7 @@ struct CommandBuffer {
|
|||||||
void bind(const GraphicsPipeline& pipeline);
|
void bind(const GraphicsPipeline& pipeline);
|
||||||
void bind(vk::PipelineLayout layout, vk::ArrayProxy<vk::DescriptorSet> desc_sets);
|
void bind(vk::PipelineLayout layout, vk::ArrayProxy<vk::DescriptorSet> desc_sets);
|
||||||
void bind(const VertexBuffer& vertex_buffer, uint32_t binding = 0);
|
void bind(const VertexBuffer& vertex_buffer, uint32_t binding = 0);
|
||||||
|
void bind(std::shared_ptr<Model> model);
|
||||||
|
|
||||||
void draw(uint32_t vertex_count, uint32_t instance_count, uint32_t first_vertex = 0, uint32_t first_instance = 0);
|
void draw(uint32_t vertex_count, uint32_t instance_count, uint32_t first_vertex = 0, uint32_t first_instance = 0);
|
||||||
|
|
||||||
|
|||||||
@ -313,8 +313,9 @@ void Renderer::draw() {
|
|||||||
command_buffer->command_buffer.setScissor(0, scissor);
|
command_buffer->command_buffer.setScissor(0, scissor);
|
||||||
|
|
||||||
|
|
||||||
command_buffer->bind(*models[0]->vertex_buffer);
|
command_buffer->bind(models[0]);
|
||||||
command_buffer->command_buffer.bindIndexBuffer(*models[0]->index_buffer, 0, vk::IndexType::eUint16);
|
|
||||||
|
|
||||||
command_buffer->bind(pipeline->layout, pipeline->desc_set);
|
command_buffer->bind(pipeline->layout, pipeline->desc_set);
|
||||||
|
|
||||||
auto sz = win.getDimensions();
|
auto sz = win.getDimensions();
|
||||||
|
|||||||
@ -87,7 +87,7 @@ void UI::newFrame() {
|
|||||||
ImGui::SetNextWindowBgAlpha(0.8f);
|
ImGui::SetNextWindowBgAlpha(0.8f);
|
||||||
ImGui::Begin("Rendering Info", nullptr);
|
ImGui::Begin("Rendering Info", nullptr);
|
||||||
|
|
||||||
ImGui::Text("ImGui Test");
|
ImGui::Text("FPS: %f", info.fps);
|
||||||
|
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,10 @@
|
|||||||
struct Renderer;
|
struct Renderer;
|
||||||
|
|
||||||
struct UI {
|
struct UI {
|
||||||
|
struct UI_Info {
|
||||||
|
float fps = 0.0;
|
||||||
|
} info;
|
||||||
|
|
||||||
vk::Device dev;
|
vk::Device dev;
|
||||||
vk::DescriptorPool desc_pool;
|
vk::DescriptorPool desc_pool;
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,8 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
ren.draw();
|
ren.draw();
|
||||||
ren.present();
|
ren.present();
|
||||||
Log::debug("Frame: %.2lf milliseconds (60fps ~ 16.67)\r", frame_timer.read());
|
const auto t = frame_timer.read();
|
||||||
|
ren.ui->info.fps = 1000.0f / t;
|
||||||
|
|
||||||
while (frame_timer.read() < 16.60)
|
while (frame_timer.read() < 16.60)
|
||||||
;
|
;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user