Create Vulkan demo
This commit is contained in:
commit
cf7a0f099a
5 files changed
+647
No files matched your search
@@ -0,0 +1,41 @@
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
project(renderer LANGUAGES C)
|
||||
|
||||
macro(configure_target target)
|
||||
set_property(TARGET ${target} PROPERTY C_STANDARD 23)
|
||||
set_property(TARGET ${target} PROPERTY C_EXTENSIONS OFF)
|
||||
target_compile_options(${target} PRIVATE -Wall -Wextra -pedantic)
|
||||
endmacro()
|
||||
|
||||
find_program(glslc glslc)
|
||||
|
||||
function(add_shaders target)
|
||||
set(bin_dir "${CMAKE_CURRENT_BINARY_DIR}/${target}")
|
||||
foreach(src ${ARGN})
|
||||
get_filename_component(stage ${src} NAME_WLE)
|
||||
set(bin "${bin_dir}/${stage}.spv")
|
||||
list(APPEND bins ${bin})
|
||||
add_custom_command(
|
||||
OUTPUT ${bin}
|
||||
COMMAND ${glslc} -fshader-stage=${stage}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${src} -o ${bin}
|
||||
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${src}"
|
||||
)
|
||||
endforeach()
|
||||
add_custom_target(${target}-spirv DEPENDS ${bins})
|
||||
add_library(${target} INTERFACE)
|
||||
target_compile_definitions(${target} INTERFACE
|
||||
VERT_SHADER_SPV="${bin_dir}/vert.spv"
|
||||
FRAG_SHADER_SPV="${bin_dir}/frag.spv")
|
||||
add_dependencies(${target} ${target}-spirv)
|
||||
endfunction()
|
||||
|
||||
add_shaders(shaders
|
||||
vert.glsl
|
||||
frag.glsl
|
||||
)
|
||||
|
||||
add_executable(demo demo.c)
|
||||
configure_target(demo)
|
||||
target_link_libraries(demo PRIVATE glfw m shaders vulkan)
|
||||
Reference in new issue
Block a user