ogre 学习笔记 - Day 8
由于之前对sample的学习已经到了一个瓶颈。无法继续了,那么果断放弃。
接下来的学习需要一定的能力了
回到Tutorial,对于之前提出的问题,为什么 Tutorail 没有加入到工程里。
打开 BasicTutorial1.cpp 所在的文件夹,发现里面有一个 CMakeLists.txt。
打开该文件,发现它是一个单独的完整的工程的定义。
-
打开 CMake-gui
Source 设定为 Tutorial CMakeLists.txt 的路径,
Build 先自行设定,例如,同文件夹下 build 路径 -
点击 Configure
选择编译器,以及platform,点击Finish。
发现有报错Add the installation prefix of "OGRE" to CMAKE_PREFIX_PATH or set "OGRE_DIR" to a directory containing one of the above files.
这是一个独立的工程,它需要依赖Ogre, 所以需要指定Ogre的路径。
首先需要编译 & 安装Ogre。因为之前的学习已经把Ogre编译好了,只需要安装了。OGRE工程中有一个叫 "INSTALL"的工程,生成它就可以了。
生成完成后,会在OGRE的生成路径下生成一个sdk文件夹。
sdk文件夹里有一个CMake文件夹,这个文件夹的路径就是 [OGRE_DIR] 了。
在CMake-gui配置中,把 [OGRE_DIR] 后的 [OGRE_DIR-NOTFOUND] 改为该路径。 -
Generate
-
Open Project
那么,就可以找到在线文档所指的 [FirstScene] 了。
-
编译
-
运行
报错,没有 dll 文件。
.exe生成的路径与 ogre sdk 的路径不一致。
作为一个独立应用的话,应该是把 sdk/bin 里的文件,拷贝到当前.exe生成路径下。为了偷懒,就直接把当前.exe的生成路径改为, xxx/sdk/bin/
打开Tutorial 的 CMakeLists.txt,在 project(…) 下面添加两行,指定生成路径。set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "xxx/sdk/bin/") // debug set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "xxx/sdk/bin/") // release
重新 Generate
重新加载项目
生成
运行
至此,一个独立的基于OGRE的应用就完成了。
因为它是一个独立的工程,只有 Tutorial 的代码, 调试不方便,不适合当前的代码分析。所以,对它进行一些修改。
- 回退之前对Tutorial CMakeLists.txt 的修改
- 打开 Ogre 根路径下的CMakeLists.txt,在最后添加
add_subdirectory(Samples/Tutorials)
- 打开 Ogre 的CMake-gui设置界面,重新Generate。
- 重新加载Ogre工程
加载完成后,之前在 Tutorial 工程里的三个项就会出现在 Ogre的解决方案里。
* 0_Bootstrap
* 1_FirstScene
* 2_CamerasAndShadows
这样就非常方便调试了。
接下来就借助 1_FirstScene 正式进入代码分析。
从 main 函数开始.
画流程图的过程中,能对整个引擎的流程的细节有所了解。
在 ApplicationContextBase 构造时,会创建 FileSystemLayer。
并从环境变量 OGRE_CONFIG_DIR 获取值,并加入到路径中。
也是脑子抽风了,想学用 mermaid 来画流程图。
两个小时,就画了这么些玩意儿。
流程图还得是图形化界面来做。
睡觉!