Compare commits
2 Commits
8d4ed62b67
...
e43f2e1aac
Author | SHA1 | Date |
---|---|---|
|
e43f2e1aac | |
|
be0e1e70bd |
|
@ -8,6 +8,11 @@ set(MAIN_FILE
|
|||
${PLUMAGE_RENDER}/render.cpp
|
||||
)
|
||||
|
||||
set(GLTF_MODEL_LOADER
|
||||
"${PLUMAGE_RENDER}/glTFBoundingBox.h"
|
||||
"${PLUMAGE_RENDER}/glTFBoundingBox.cpp"
|
||||
)
|
||||
|
||||
# wayland requires additional source files
|
||||
IF(USE_WAYLAND_WSI)
|
||||
SET(SOURCE ${SOURCE} ${CMAKE_BINARY_DIR}/xdg-shell-client-protocol.h ${CMAKE_BINARY_DIR}/xdg-shell-protocol.c )
|
||||
|
@ -37,10 +42,11 @@ include_directories(${lib_base_path})
|
|||
if(WIN32)
|
||||
add_executable(${RenderName} WIN32 ${SHADERS_GLSL} ${SHADERS_HLSL}
|
||||
${MAIN_FILE}
|
||||
${GLTF_MODEL_LOADER}
|
||||
"render/glTFModel.h"
|
||||
"render/glTFModel.cpp"
|
||||
"render/renderFoundation.h"
|
||||
"render/renderFoundation.cpp")
|
||||
"render/renderFoundation.cpp" )
|
||||
target_link_libraries(${RenderName} base ${Vulkan_LIBRARY} ${WINLIBS})
|
||||
endif()
|
||||
set_target_properties(${RenderName} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
||||
|
@ -51,6 +57,12 @@ if(RESOURCE_INSTALL_DIR)
|
|||
endif()
|
||||
|
||||
|
||||
#if(WIN32)
|
||||
# target_compile_definitions(MyLib PRIVATE MYLIB_EXPORTS)
|
||||
#endif(UNIX AND NOT APPLE) # Linux及类似系统
|
||||
# add_compile_options(-fvisibility=hidden)
|
||||
# add_compile_options(-fvisibility-inlines-hidden)
|
||||
#endif()
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
#include "glTFBoundingBox.h"
|
||||
|
||||
GLTFLOADER_NAMESPACE_BEGIN
|
||||
|
||||
|
||||
glTFBoundingBOX::glTFBoundingBOX()
|
||||
: m_isValid(false)
|
||||
, m_Min(glm::vec3(0,0,0))
|
||||
, m_Max(glm::vec3(1,1,1))
|
||||
{
|
||||
}
|
||||
|
||||
glTFBoundingBOX::glTFBoundingBOX(glm::vec3 min, glm::vec3 max)
|
||||
: m_isValid(false)
|
||||
, m_Min(min)
|
||||
, m_Max(max)
|
||||
{
|
||||
}
|
||||
|
||||
glTFBoundingBOX::~glTFBoundingBOX()
|
||||
{
|
||||
}
|
||||
|
||||
glTFBoundingBOX glTFBoundingBOX::getAABB(glm::mat4 matrix)
|
||||
{
|
||||
glm::vec3 min = glm::vec3(matrix[3]);
|
||||
glm::vec3 max = min;
|
||||
glm::vec3 v0, v1;
|
||||
|
||||
glm::vec3 right = glm::vec3(matrix[0]);
|
||||
v0 = right * m_Min.x;
|
||||
v1 = right * m_Max.x;
|
||||
min += glm::min(v0, v1);
|
||||
max += glm::max(v0, v1);
|
||||
|
||||
glm::vec3 up = glm::vec3(matrix[1]);
|
||||
v0 = up * m_Min.y;
|
||||
v1 = up * m_Max.y;
|
||||
min += glm::min(v0, v1);
|
||||
max += glm::max(v0, v1);
|
||||
|
||||
glm::vec3 back = glm::vec3(matrix[2]);
|
||||
v0 = back * m_Min.z;
|
||||
v1 = back * m_Max.z;
|
||||
min += glm::min(v0, v1);
|
||||
max += glm::max(v0, v1);
|
||||
|
||||
return glTFBoundingBOX(min, max);
|
||||
}
|
||||
|
||||
|
||||
GLTFLOADER_NAMESPACE_END
|
|
@ -0,0 +1,44 @@
|
|||
#ifndef GLTFBOUNDINGBOX_H
|
||||
#define GLTFBOUNDINGBOX_H
|
||||
|
||||
#include "glTFModel_Common.h"
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
GLTFLOADER_NAMESPACE_BEGIN
|
||||
|
||||
class glTFBoundingBOX
|
||||
{
|
||||
public:
|
||||
glTFBoundingBOX();
|
||||
glTFBoundingBOX(glm::vec3 min, glm::vec3 max);
|
||||
~glTFBoundingBOX();
|
||||
|
||||
glTFBoundingBOX getAABB(glm::mat4 matrix);
|
||||
|
||||
private:
|
||||
|
||||
glm::vec3 m_Min;
|
||||
glm::vec3 m_Max;
|
||||
bool m_isValid = false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GLTFLOADER_NAMESPACE_END
|
||||
|
||||
#endif // !GLTFBOUNDINGBOX_H
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
glTFModel::BoundingBox::BoundingBox(glm::vec3 min, glm::vec3 max) : min(min), max(max) {
|
||||
};
|
||||
|
||||
//Axis-Aligned Bounding Box),¼ò³Æ AABB
|
||||
//Axis-Aligned Bounding Box),简称 AABB
|
||||
glTFModel::BoundingBox glTFModel::BoundingBox::getAABB(glm::mat4 m) {
|
||||
glm::vec3 min = glm::vec3(m[3]);
|
||||
glm::vec3 max = min;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#pragma once
|
||||
#pragma once
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
#pragma once
|
||||
|
||||
/// 命名空间宏
|
||||
#define GLTFLOADER_NAMESPACE_BEGIN namespace glTFLoader {
|
||||
#define GLTFLOADER_NAMESPACE_END }
|
||||
|
||||
/// windows 导入导出宏,GLTFLOADER_EXPORTS将在cmake中定义
|
||||
/// unix-like 下提供符号可见性控制
|
||||
#ifdef GLTFLOADER_STATIC_BUILD
|
||||
#define GLTFLOADER_API
|
||||
#define GLTFLOADER_LOCAL
|
||||
#else
|
||||
#ifdef _WIN32
|
||||
#ifdef GLTFLOADER_EXPORTS
|
||||
#define GLTFLOADER_API __declspec(dllexport)
|
||||
#define GLTFLOADER_LOCAL
|
||||
#else
|
||||
#define GLTFLOADER_API __declspec(dllimport)
|
||||
#define GLTFLOADER_LOCAL
|
||||
#endif
|
||||
#else
|
||||
#if __GNUC__ >= 4 || defined(__clang__)
|
||||
#define GLTFLOADER_API __attribute__ ((visibility ("default")))
|
||||
#define GLTFLOADER_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
#else
|
||||
#define GLTFLOADER_API
|
||||
#define GLTFLOADER_LOCAL
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
Loading…
Reference in New Issue