add VertexColor.frag with update first_triangle

This commit is contained in:
hyzboy 2020-01-20 15:45:12 +08:00
parent f947a0746a
commit 6e45d2b6b4
3 changed files with 30 additions and 16 deletions

View File

@ -33,10 +33,10 @@ class TestApp:public VulkanApplicationFramework
{ {
private: private:
WorldMatrix wm; Camera cam;
vulkan::Material * material =nullptr; vulkan::Material * material =nullptr;
vulkan::DescriptorSets * descriptor_sets =nullptr; vulkan::MaterialInstance * material_instance =nullptr;
vulkan::Renderable * render_obj =nullptr; vulkan::Renderable * render_obj =nullptr;
vulkan::Buffer * ubo_mvp =nullptr; vulkan::Buffer * ubo_mvp =nullptr;
@ -54,7 +54,7 @@ public:
SAFE_CLEAR(pipeline); SAFE_CLEAR(pipeline);
SAFE_CLEAR(ubo_mvp); SAFE_CLEAR(ubo_mvp);
SAFE_CLEAR(render_obj); SAFE_CLEAR(render_obj);
SAFE_CLEAR(descriptor_sets); SAFE_CLEAR(material_instance);
SAFE_CLEAR(material); SAFE_CLEAR(material);
} }
@ -63,12 +63,12 @@ private:
bool InitMaterial() bool InitMaterial()
{ {
material=shader_manage->CreateMaterial(OS_TEXT("res/shader/FlatColor.vert.spv"), 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) if(!material)
return(false); return(false);
render_obj=material->CreateRenderable(VERTEX_COUNT); render_obj=material->CreateRenderable(VERTEX_COUNT);
descriptor_sets=material->CreateDescriptorSets(); material_instance=material->CreateInstance();
return(true); return(true);
} }
@ -76,17 +76,18 @@ private:
{ {
const VkExtent2D extent=sc_render_target->GetExtent(); 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) if(!ubo_mvp)
return(false); return(false);
if(!descriptor_sets->BindUBO(material->GetUBO("world"),ubo_mvp)) material_instance->BindUBO("world",ubo_mvp);
return(false); material_instance->Update();
descriptor_sets->Update();
return(true); return(true);
} }
@ -142,18 +143,21 @@ public:
if(!InitPipeline()) if(!InitPipeline())
return(false); return(false);
BuildCommandBuffer(pipeline,descriptor_sets,render_obj); BuildCommandBuffer(pipeline,material_instance->GetDescriptorSets(),render_obj);
return(true); return(true);
} }
void Resize(int w,int h)override 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 };//class TestApp:public VulkanApplicationFramework

View File

@ -0,0 +1,9 @@
#version 450 core
layout(location = 0) in vec4 FragmentColor;
layout(location = 0) out vec4 FragColor;
void main()
{
FragColor=FragmentColor;
}

View File

@ -2,6 +2,7 @@ glslangValidator -V -o FlatColor.vert.spv FlatColor.vert
glslangValidator -V -o FlatColor3D.vert.spv FlatColor3D.vert glslangValidator -V -o FlatColor3D.vert.spv FlatColor3D.vert
glslangValidator -V -o OnlyPosition.vert.spv OnlyPosition.vert glslangValidator -V -o OnlyPosition.vert.spv OnlyPosition.vert
glslangValidator -V -o FlatColor.frag.spv FlatColor.frag 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.vert.spv FlatTexture.vert
glslangValidator -V -o FlatTexture.frag.spv FlatTexture.frag glslangValidator -V -o FlatTexture.frag.spv FlatTexture.frag