在完成 2.7 BVH 实验时发现了这种情况,且无报错信息,直接闪退。
这可能是什么原因?
(已按以下命令依次执行,且确认 CMakelists.txt 更改无误:
已解决,是我实现有误。
cmake_minimum_required(VERSION 3.5)
project(dandelion VERSION 1.1)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
if (CMAKE_BUILD_TYPE MATCHES "(Debug)|(Release)")
message("Current build type: ${CMAKE_BUILD_TYPE}")
else()
message("Set default build type to Debug.")
set(CMAKE_BUILD_TYPE "Debug")
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
add_subdirectory(deps/glfw)
add_subdirectory(deps/fmt)
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_COLLADA_IMPORTER TRUE)
set(ASSIMP_BUILD_OBJ_IMPORTER TRUE)
set(ASSIMP_BUILD_FBX_IMPORTER TRUE)
add_subdirectory(deps/assimp)
set(GLAD_SOURCES
deps/glad/src/glad.c
)
set(IMGUI_SOURCES
deps/imgui/imgui.cpp
deps/imgui/imgui_demo.cpp
deps/imgui/imgui_draw.cpp
deps/imgui/imgui_tables.cpp
deps/imgui/imgui_widgets.cpp
deps/imgui/imgui_impl_glfw.cpp
deps/imgui/imgui_impl_opengl3.cpp
)
set(DANDELION_PLATFORM_SOURCES
src/platform/platform.cpp
src/platform/gl.cpp
src/platform/shader.cpp
)
set(DANDELION_UI_SOURCES
src/ui/controller.cpp
src/ui/menubar.cpp
src/ui/toolbar.cpp
)
set(DANDELION_SCENE_SOURCES
src/scene/scene.cpp
src/scene/group.cpp
src/scene/object.cpp
src/scene/camera.cpp
src/scene/light.cpp
)
set(DANDELION_UTILS_SOURCES
src/utils/stb_image_wrapper.cpp
src/utils/ray.cpp
src/utils/aabb.cpp
src/utils/bvh.cpp
src/utils/kinetic_state.cpp
src/utils/logger.cpp
)
set(DANDELION_RENDER_SOURCES
src/render/shader.cpp
src/render/rasterizer.cpp
src/render/rasterizer_renderer.cpp
src/render/whitted_renderer.cpp
src/render/render_engine.cpp
src/render/triangle.cpp
)
set(DANDELION_GEOMETRY_SOURCES
src/geometry/halfedge_mesh.cpp
src/geometry/meshedit.cpp
src/geometry/halfedge.cpp
src/geometry/vertex.cpp
src/geometry/edge.cpp
src/geometry/face.cpp
)
set(DANDELION_SIMULATION_SOURCES
src/simulation/solver.cpp
)
set(SOURCES
src/main.cpp
${DANDELION_PLATFORM_SOURCES}
${DANDELION_UI_SOURCES}
${DANDELION_SCENE_SOURCES}
${DANDELION_UTILS_SOURCES}
${DANDELION_RENDER_SOURCES}
${DANDELION_GEOMETRY_SOURCES}
${DANDELION_SIMULATION_SOURCES}
${GLAD_SOURCES}
${IMGUI_SOURCES}
)
add_executable(${PROJECT_NAME} ${SOURCES})
target_include_directories(${PROJECT_NAME}
PRIVATE deps
PRIVATE deps/glad/include
)
target_link_directories(${PROJECT_NAME} PRIVATE deps)
target_link_libraries(${PROJECT_NAME}
glfw
assimp
fmt::fmt
# debug dandelion-ray-debug
# optimized dandelion-ray
# debug dandelion-bvh-debug
# optimized dandelion-bvh
)
target_compile_definitions(${PROJECT_NAME}
PRIVATE $<$<CONFIG:Debug>:DEBUG>
PRIVATE SPDLOG_FMT_EXTERNAL
)
set(current_target ${PROJECT_NAME})
include(${CMAKE_CURRENT_SOURCE_DIR}/CompilerFlags.cmake)
file(COPY ${PROJECT_SOURCE_DIR}/resources DESTINATION ${PROJECT_BINARY_DIR})
已解决,是我自己的实现有问题。