diff --git a/example/Vulkan/first_triangle.cpp b/example/Vulkan/first_triangle.cpp index bccd93b8..6c36624e 100644 --- a/example/Vulkan/first_triangle.cpp +++ b/example/Vulkan/first_triangle.cpp @@ -33,10 +33,10 @@ class TestApp:public VulkanApplicationFramework { private: - WorldMatrix wm; + Camera cam; vulkan::Material * material =nullptr; - vulkan::DescriptorSets * descriptor_sets =nullptr; + vulkan::MaterialInstance * material_instance =nullptr; vulkan::Renderable * render_obj =nullptr; vulkan::Buffer * ubo_mvp =nullptr; @@ -54,7 +54,7 @@ public: SAFE_CLEAR(pipeline); SAFE_CLEAR(ubo_mvp); SAFE_CLEAR(render_obj); - SAFE_CLEAR(descriptor_sets); + SAFE_CLEAR(material_instance); SAFE_CLEAR(material); } @@ -63,12 +63,12 @@ private: bool InitMaterial() { material=shader_manage->CreateMaterial(OS_TEXT("res/shader/FlatColor.vert.spv"), - OS_TEXT("res/shader/FlatColor.frag.spv")); + OS_TEXT("res/shader/VertexColor.frag.spv")); if(!material) return(false); render_obj=material->CreateRenderable(VERTEX_COUNT); - descriptor_sets=material->CreateDescriptorSets(); + material_instance=material->CreateInstance(); return(true); } @@ -76,17 +76,18 @@ private: { const VkExtent2D extent=sc_render_target->GetExtent(); - wm.ortho=ortho(extent.width,extent.height); + cam.width=extent.width; + cam.height=extent.height; - ubo_mvp=device->CreateUBO(sizeof(WorldMatrix),&wm); + cam.Refresh(); + + ubo_mvp=device->CreateUBO(sizeof(WorldMatrix),&cam.matrix); if(!ubo_mvp) return(false); - - if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp)) - return(false); - - descriptor_sets->Update(); + + material_instance->BindUBO("world",ubo_mvp); + material_instance->Update(); return(true); } @@ -142,18 +143,21 @@ public: if(!InitPipeline()) return(false); - BuildCommandBuffer(pipeline,descriptor_sets,render_obj); + BuildCommandBuffer(pipeline,material_instance->GetDescriptorSets(),render_obj); return(true); } void Resize(int w,int h)override { - wm.ortho=ortho(w,h); + cam.width=w; + cam.height=h; - ubo_mvp->Write(&wm); + cam.Refresh(); - BuildCommandBuffer(pipeline,descriptor_sets,render_obj); + ubo_mvp->Write(&cam.matrix); + + BuildCommandBuffer(pipeline,material_instance->GetDescriptorSets(),render_obj); } };//class TestApp:public VulkanApplicationFramework diff --git a/res/shader/VertexColor.frag b/res/shader/VertexColor.frag new file mode 100644 index 00000000..1e87450b --- /dev/null +++ b/res/shader/VertexColor.frag @@ -0,0 +1,9 @@ +#version 450 core + +layout(location = 0) in vec4 FragmentColor; +layout(location = 0) out vec4 FragColor; + +void main() +{ + FragColor=FragmentColor; +} diff --git a/res/shader/shader_compile.sh b/res/shader/shader_compile.sh index ccbde0d6..e40bc611 100755 --- a/res/shader/shader_compile.sh +++ b/res/shader/shader_compile.sh @@ -2,6 +2,7 @@ glslangValidator -V -o FlatColor.vert.spv FlatColor.vert glslangValidator -V -o FlatColor3D.vert.spv FlatColor3D.vert glslangValidator -V -o OnlyPosition.vert.spv OnlyPosition.vert glslangValidator -V -o FlatColor.frag.spv FlatColor.frag +glslangValidator -V -o VertexColor.frag.spv VertexColor.frag glslangValidator -V -o FlatTexture.vert.spv FlatTexture.vert glslangValidator -V -o FlatTexture.frag.spv FlatTexture.frag