View Code? Open in Web Editor
NEW
This project forked from puma10100505/learning_project
License: MIT License
Shell 0.01%
JavaScript 6.29%
C++ 91.84%
Python 0.01%
Perl 0.01%
C 1.64%
Objective-C 0.01%
Lua 0.01%
CSS 0.05%
HTML 0.09%
CMake 0.05%
GLSL 0.01%
Batchfile 0.01%
M4 0.01%
HLSL 0.01%
learning_project's Introduction
- 将learning_opengl、learning_physx合并到同一个项目中,因为有部分共用的内容,后续还会增加recastnavigation的实验代码。此工程主要以学习实验为目的,通过搭建一个可用的环境了解OpenGL, PhysX, RecastNavigation等相关的开源项目的使用方法,因为要在不同的地方编写代码,所以这个工程被动地实现了CrossPlatform : ). 在Windows和MacOS都可以运行,Linux在后续也可以运行,不过当前还有一些Linux平台的库和CMake代码没有完善。
LearningProject涉及的开源库、工具和接口:
- Assets: 资源文件夹,包括字体(Fonts)、纹理(Textures)、3D模型(Meshes)以及着色器(Shader)
- Bin: 生成的可执行文件都会统一复制到这个目录
- Dependency: 备份的一些依赖项目
- Include: 工程的统一包含目录
- Libraries: 工程的统一库目录,其中按平台分为Windows, MacOS和Linux
- Source: 源代码目录
- Thirdparty: 第三方库的目录,部分以源码形式提供的库放在这里构建产生静态链接库文件
- 如果没有特别说明,修改的CMakeLists.txt文件都是位于Source/XXX/CMakeLists.txt这个地方的文件,即程序最内层的CMakeLists.txt文件
- 确保系统中已经安装cmake最新版本
- 下载源代码后在工程根目录创建一个用于构建的目录,可使用命令:cmake -E make_directory cmake-build-debug, cmake-build-debug可以换成其它任何名称
- 在工程根目录执行命令:
- cmake -B cmake-build-debug
- cmake --build cmake-build-debug
- 等待构建完成后在工程根目录可以看到Bin文件夹,里边就是构建的输出(可执行文件)
- 对于一些非必要的库,可以针对性地在CMakeLists.txt文件中开启或关闭(如果不显式指定,开关默认为OFF),构建开关列表:
- USE_PHYSX
- USE_D3D
- USE_FREEGLUT
- USE_IMGUI
- USE_NETIMGUI
- USE_IMPLOT
- USE_IMNODES
- USE_IMGUIZMO
- USE_LOGURU
- USE_NODEEDITOR
- USE_GLFW
- USE_NAV
- USE_BOX2D
- USE_OGRE
- USE_PERFETTO
- USE_BOOST_FILESYSTEM
- 如果要创建Windows窗口程序,需要在CMakeLists.txt中加上如下的代码:
`
如果是WIN32窗口程序,入口函数使用WinMain
if (WIN32)
set_target_properties(${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE TRUE)
endif()
`
- 工程支持在VSCode环境下调试代码,工程已经有配置好的launch.json文件
- 要进行代码调试,在Source下的每个APP目录,其中的主入口代码文件名要与其所在的目录同名,如DxImGuiWindowDemo/DxImGuiWindowDemo.cpp就是DxImGuiWindowDemo这个目录下的主入口代码文件,main函数位于其中。这是方便在VSCode中调试的一个命名约定。
- 根据https://learnopengl-cn.github.io/01%20Getting%20started/09%20Camera/#_3的方法实现简单的摄像机控制。摄像机控制完成后可以更方便地实现基于物理的场景渲染,更容易跟踪场景物体。
- 渲染的时候如果设置了uniform但是没有在程序中设置它们,可能会导致渲染结果出现奇怪的错误,如果通过uniform设置MVP矩阵变换,但是在程序中没有设置MVP矩阵的值,可能会导致图形不能正常显示。
- OPENGL中VBO, VAO, EBO的概念以及关系,学习使用GL的基础API指令绘制图形
- 集成Freeglut以及基于Glut的ImGUI, GlutWindowWithImGui目录下的代码可作为其DEMO, 此DEMO可用于物理引擎试验,因为Freeglut有方便的接口用于绘制基础几何形状。下一步可在此基础上引入物理计算。
- 将implot, imnodes以及node-editor集成到工程中,后续创建窗口的时候默认支持implot, imnodes和node-editor, 可以在应用中直接调用它们的API,不用考虑它们的初始化和销毁
- 自己部署的远程perfetto ui web应用,如果加载数据时出错可以修改chrome://flags/#unsafely-treat-insecure-origin-as-secure的配置(chrome)
- 重构场景相关对象集中管理渲染对象
- 重构窗口对象,实现WindowManager以及Window类,集中管理窗口相关上下文
- 实现基于glfw+PhysX+LearningFoundation的物理场景物体渲染。
- Linux环境下的工程配置以及构建脚本
- 渲染与逻辑分离,多线程实现*
- 物理引擎的序列化和反序列化功能研究
learning_project's People
Contributors
Watchers