moved over to the enum method of drawing. Not flexible, but type safe

This commit is contained in:
2020-02-12 00:42:30 -08:00
parent 80c0d323be
commit 659cd98a1f
23 changed files with 192 additions and 570 deletions

View File

@@ -15,13 +15,12 @@ use crate::canvas::canvas_frame::{CanvasFrame, CanvasFrameTest};
use std::time::Duration;
use vulkano::pipeline::depth_stencil::{DynamicStencilValue, StencilFaceFlags};
use vulkano::pipeline::vertex::{OneVertexOneInstanceDefinition, SingleBufferDefinition};
use crate::util::vertex_3d::Vertex3D;
use crate::canvas::canvas_state::CanvasState;
use crate::canvas::managed::shader::generic_shader::GenericShader;
use crate::canvas::managed::shader::text_shader::TextShader;
use crate::canvas::managed::handles::{CanvasTextureHandle, CompiledShaderHandle, CanvasFontHandle, CanvasImageHandle};
use crate::compute::managed::handles::{CompuKernelHandle, CompuBufferHandle};
use crate::{ImplVertexData1, VertexTypes};
use crate::util::vertex::VertexTypes;
/// VKProcessor holds the vulkan instance information, the swapchain,
@@ -224,10 +223,10 @@ impl<'a> VkProcessor<'a> {
}
///
pub fn run<VTypes: Into<VertexTypes>>(&mut self,
pub fn run(&mut self,
surface: &'a Arc<Surface<Window>>,
//canvas_frame: CanvasFrame,
canvas_frame: CanvasFrameTest<VTypes>,
canvas_frame: CanvasFrameTest,
compute_frame: CompuFrame,
) {
@@ -266,13 +265,12 @@ impl<'a> VkProcessor<'a> {
drop(g);
{
let allocated_buffers = {
// take the canvas frame and create the vertex buffers
// TODO: This performs gpu buffer creation. Shouldn't be in hotpath??
let g = hprof::enter("Canvas creates GPU buffers");
//self.canvas_state.draw(canvas_frame);
}
self.canvas_state.allocate(canvas_frame)
};
let mut command_buffer =
AutoCommandBufferBuilder::primary_one_time_submit(self.device.clone(), self.queue.family()).unwrap();
@@ -287,7 +285,7 @@ impl<'a> VkProcessor<'a> {
// Add the draw commands
//let mut command_buffer = self.canvas_state.draw_commands(command_buffer, framebuffers, image_num);
let mut command_buffer =
self.canvas_state.draw_commands_test(command_buffer, framebuffers, image_num, canvas_frame);
self.canvas_state.draw_commands(command_buffer, framebuffers, image_num, allocated_buffers);
// And build
let command_buffer = command_buffer.build().unwrap();