upgraded example folder at VisualStudio project.
This commit is contained in:
parent
c231637613
commit
80b89b3d21
@ -1 +1 @@
|
|||||||
Subproject commit ba8cc1897ebcf0e826a1e24d6652596afc9eccde
|
Subproject commit ecbb0682a2c5b33348431d44e64b3a4b775829ee
|
@ -1,4 +1,4 @@
|
|||||||
macro(CreateProject name)
|
macro(CreateProject group name)
|
||||||
add_executable(${name} ${ARGN} ${VULKAN_APP_FRAMEWORK})
|
add_executable(${name} ${ARGN} ${VULKAN_APP_FRAMEWORK})
|
||||||
target_link_libraries(${name} ${ULRE})
|
target_link_libraries(${name} ${ULRE})
|
||||||
|
|
||||||
@ -7,55 +7,43 @@
|
|||||||
set_property(TARGET ${name} PROPERTY VS_DPI_AWARE "PerMonitor")
|
set_property(TARGET ${name} PROPERTY VS_DPI_AWARE "PerMonitor")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Vulkan")
|
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Vulkan/${group}")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(CreateQtProject name)
|
CreateProject("Basic" 1st_triangle first_triangle.cpp)
|
||||||
add_executable(${name} ${ARGN} VulkanAppFramework.h)
|
CreateProject("Basic" 2nd_triangle second_triangle.cpp)
|
||||||
|
CreateProject("Basic" FragCoord FragCoordTest.cpp)
|
||||||
|
CreateProject("Basic" indices_rect indices_rect.cpp)
|
||||||
|
CreateProject("Basic" FullScreenTriangle FullScreenTriangle.cpp)
|
||||||
|
CreateProject("Basic" InstanceTriangle InstanceTriangle.cpp)
|
||||||
|
|
||||||
set(IDENTIFIER "com.hyzgame.example")
|
CreateProject("Texture" TextureFormat TextureFormat.cpp)
|
||||||
|
CreateProject("Texture" texture_rect texture_rect.cpp)
|
||||||
target_link_libraries(${name} ${ULRE} Qt5::Core Qt5::Gui Qt5::Widgets)
|
#CreateProject("Texture" HQFilterTexture HQFilterTexture.cpp)
|
||||||
|
|
||||||
IF(MSVC)
|
|
||||||
set_target_properties(${name} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${ULRE_RUNTIME_PATH})
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
set_property(TARGET ${name} PROPERTY FOLDER "ULRE/Example/Vulkan")
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
CreateProject(00.1st_triangle first_triangle.cpp)
|
|
||||||
CreateProject(01.2nd_triangle second_triangle.cpp)
|
|
||||||
CreateProject(02.FragCoord FragCoordTest.cpp)
|
|
||||||
CreateProject(03.indices_rect indices_rect.cpp)
|
|
||||||
CreateProject(04.FullScreenTriangle FullScreenTriangle.cpp)
|
|
||||||
|
|
||||||
CreateProject(05.TextureFormat TextureFormat.cpp)
|
|
||||||
CreateProject(06.texture_rect texture_rect.cpp)
|
|
||||||
#CreateProject(05.HQFilterTexture HQFilterTexture.cpp)
|
|
||||||
#CreateProject(06.Geometry2D Geometry2D.cpp)
|
#CreateProject(06.Geometry2D Geometry2D.cpp)
|
||||||
CreateProject(07.Geometry3D Geometry3D.cpp)
|
|
||||||
CreateProject(08.SceneTree SceneTree.cpp)
|
CreateProject("Geometry2D" RectanglePrimitive RectanglePrimitive.cpp)
|
||||||
|
CreateProject("Tile" DrawTile DrawTile.cpp)
|
||||||
|
CreateProject("Tile" DrawText DrawText.cpp)
|
||||||
|
|
||||||
|
CreateProject("Geometry3D " Geometry3D Geometry3D.cpp)
|
||||||
|
|
||||||
|
CreateProject("Scene" SceneTree SceneTree.cpp)
|
||||||
#CreateProject(09.LoadStaticMesh LoadStaticMesh.cpp LoadScene.cpp)
|
#CreateProject(09.LoadStaticMesh LoadStaticMesh.cpp LoadScene.cpp)
|
||||||
CreateProject(10.InlineGeometryScene InlineGeometryScene.cpp)
|
CreateProject("Scene" InlineGeometryScene InlineGeometryScene.cpp)
|
||||||
CreateProject(11.SkyColor SkyColor.cpp)
|
|
||||||
CreateProject(11.Atmosphere Atmosphere.cpp)
|
|
||||||
|
|
||||||
CreateProject(12.RectanglePrimitive RectanglePrimitive.cpp)
|
CreateProject("Scene/Sky" SkyColor SkyColor.cpp)
|
||||||
|
CreateProject("Scene/Sky" Atmosphere Atmosphere.cpp)
|
||||||
|
|
||||||
CreateProject(13.DrawTile DrawTile.cpp)
|
CreateProject("Advanced Rendering" OffscreenRender OffscreenRender.cpp)
|
||||||
|
|
||||||
CreateProject(14.DrawText DrawText.cpp)
|
|
||||||
|
|
||||||
CreateProject(15.OffscreenRender OffscreenRender.cpp)
|
|
||||||
|
|
||||||
#CreateProject(12.PBRBasic PBRBasic.cpp)
|
#CreateProject(12.PBRBasic PBRBasic.cpp)
|
||||||
#CreateProject(12.Deferred Deferred.cpp)
|
#CreateProject(12.Deferred Deferred.cpp)
|
||||||
CreateProject(16.DeferredRender DeferredRender.cpp)
|
CreateProject("AdvancedRendering" DeferredRender DeferredRender.cpp)
|
||||||
#CreateProject(14.AutoMaterial auto_material.cpp)
|
#CreateProject(14.AutoMaterial auto_material.cpp)
|
||||||
|
|
||||||
CreateProject(17.Cubemap Cubemap.cpp)
|
CreateProject("Texture" Cubemap Cubemap.cpp)
|
||||||
CreateProject(17.EquirectangularMap EquirectangularMap.cpp)
|
CreateProject("Texture" EquirectangularMap EquirectangularMap.cpp)
|
||||||
CreateProject(18.RayPicking RayPicking.cpp)
|
CreateProject("Picking" RayPicking RayPicking.cpp)
|
||||||
CreateProject(19.InstanceCube InstanceCube.cpp)
|
|
||||||
CreateProject(20.TerrainSimple TerrainSimple.cpp)
|
CreateProject("Landscape" TerrainSimple TerrainSimple.cpp)
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
// Instance Cube
|
|
||||||
|
|
||||||
// 基本的Instance绘制测试用例
|
|
||||||
|
|
139
example/Vulkan/InstanceTriangle.cpp
Normal file
139
example/Vulkan/InstanceTriangle.cpp
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
// Instance Triangle
|
||||||
|
|
||||||
|
// 基本的Instance绘制测试用例,不使用场景树
|
||||||
|
|
||||||
|
#include"VulkanAppFramework.h"
|
||||||
|
#include<hgl/math/Math.h>
|
||||||
|
#include<hgl/filesystem/FileSystem.h>
|
||||||
|
#include<hgl/graph/InlineGeometry.h>
|
||||||
|
|
||||||
|
using namespace hgl;
|
||||||
|
using namespace hgl::graph;
|
||||||
|
|
||||||
|
constexpr uint32_t SCREEN_WIDTH=1280;
|
||||||
|
constexpr uint32_t SCREEN_HEIGHT=720;
|
||||||
|
|
||||||
|
class TestApp:public VulkanApplicationFramework
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
double start_time;
|
||||||
|
|
||||||
|
MaterialInstance * material_instance =nullptr;
|
||||||
|
Renderable * renderable_object =nullptr;
|
||||||
|
RenderableInstance *render_instance =nullptr;
|
||||||
|
|
||||||
|
Pipeline * pipeline =nullptr;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
TestApp()
|
||||||
|
{
|
||||||
|
start_time=GetDoubleTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
~TestApp()=default;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
bool InitMaterial()
|
||||||
|
{
|
||||||
|
material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/Vertex2DColor"));
|
||||||
|
|
||||||
|
if(!material_instance)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
pipeline=CreatePipeline(material_instance,InlinePipeline::Solid2D,Prim::Triangles);
|
||||||
|
|
||||||
|
return pipeline;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool InitUBO()
|
||||||
|
{
|
||||||
|
color_material.diffuse.Set(1,1,1);
|
||||||
|
color_material.abiment.Set(0.25,0.25,0.25);
|
||||||
|
|
||||||
|
ubo_color=db->CreateUBO(sizeof(color_material),&color_material);
|
||||||
|
if(!ubo_color)return(false);
|
||||||
|
|
||||||
|
sun_direction=normalized(Vector3f(rand(),rand(),rand()));
|
||||||
|
|
||||||
|
ubo_sun=db->CreateUBO(sizeof(sun_direction),&sun_direction);
|
||||||
|
if(!ubo_sun)return(false);
|
||||||
|
|
||||||
|
{
|
||||||
|
MaterialParameters *mp=material_instance->GetMP(DescriptorSetsType::Value);
|
||||||
|
|
||||||
|
if(!mp)return(false);
|
||||||
|
|
||||||
|
mp->BindUBO("material",ubo_color);
|
||||||
|
mp->BindUBO("sun",ubo_sun);
|
||||||
|
|
||||||
|
mp->Update();
|
||||||
|
}
|
||||||
|
|
||||||
|
BindCameraUBO(material_instance);
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool InitRenderable()
|
||||||
|
{
|
||||||
|
CubeCreateInfo cci;
|
||||||
|
|
||||||
|
cci.tangent=false;
|
||||||
|
cci.tex_coord=false;
|
||||||
|
|
||||||
|
renderable_object=CreateRenderableCube(db,material_instance->GetVAB(),&cci);
|
||||||
|
|
||||||
|
if(!renderable_object)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
render_instance=db->CreateRenderableInstance(renderable_object,material_instance,pipeline);
|
||||||
|
|
||||||
|
if(!render_instance)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
bool Init()
|
||||||
|
{
|
||||||
|
if(!VulkanApplicationFramework::Init(SCREEN_WIDTH,SCREEN_HEIGHT))
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
if(!InitMaterial())
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
if(!InitUBO())
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
if(!InitRenderable())
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
if(!VulkanApplicationFramework::BuildCommandBuffer(render_instance))
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Resize(int w,int h)override
|
||||||
|
{
|
||||||
|
VulkanApplicationFramework::Resize(w,h);
|
||||||
|
|
||||||
|
VulkanApplicationFramework::BuildCommandBuffer(render_instance);
|
||||||
|
}
|
||||||
|
};//class TestApp:public VulkanApplicationFramework
|
||||||
|
|
||||||
|
int main(int,char **)
|
||||||
|
{
|
||||||
|
TestApp app;
|
||||||
|
|
||||||
|
if(!app.Init())
|
||||||
|
return(-1);
|
||||||
|
|
||||||
|
while(app.Run());
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user