【Ogre-windows】实例配置

前言

折腾了好久才搞定教程实例, 主要是因为上一篇博客安装的具体版本是Ogre1.10.9, 而官方的Ogre Wiki Tutorial Framework没有指定具体版本, 如果单纯下载Ogre Wiki Tutorial Framework 1.10 - (Windows line endings, updated 2015-10-15) 运行, 基本会血崩. 所以, 在经过仔细琢磨官网以后发现发现其实例藏在D:\Package\Ogre1.10\ogre-master\Samples\Tutorials这个文件夹中, 尴了个尬, 感觉Ogre每次更新版本都有些比较大的变动, 比如1.9的实例不能用于1.10,而 1.10自己都有好几个版本, 目前官方的github上推荐的应该是1.10.9

国际惯例, 参考博客

Start Learning Ogre Here

Setting up an OGRE project

两种配置方法, Cmake是最简单的, 但是为了进一步了解都需要哪也东东, 我们也研究一波手动加入三方库

配置实例——Cmake

去目录D:\Package\Ogre1.10\ogre-master\Samples\Tutorials看一眼它的Cmake文件发现很简单:

cmake_minimum_required (VERSION 2.8)
project(OgreTutorialsSample)## [discover_ogre]
# specify which version you need
find_package(OGRE 1.10 REQUIRED)# the search paths
include_directories(${OGRE_INCLUDE_DIRS})
link_directories(${OGRE_LIBRARY_DIRS})# copy essential config files next to our binary where OGRE autodiscovers them
file(COPY ${OGRE_CONFIG_DIR}/plugins.cfg ${OGRE_CONFIG_DIR}/resources.cfgDESTINATION ${CMAKE_BINARY_DIR})
## [discover_ogre]add_executable(0_Bootstrap Bootstrap.cpp)
target_link_libraries(0_Bootstrap ${OGRE_LIBRARIES})add_executable(1_FirstScene BasicTutorial1.cpp)
target_link_libraries(1_FirstScene ${OGRE_LIBRARIES})add_executable(2_CamerasAndShadows BasicTutorial2.cpp)
target_link_libraries(2_CamerasAndShadows ${OGRE_LIBRARIES})

虽然我没具体Cmake, 但是稍微有点编程素养的应该不难发现, 主要包含:

  • 核对Ogre的版本是否为1.10
  • 重要的包含目录和库目录都必须得有
  • 拷贝Ogre程序运行必须载入的两个cfg文件

随后直接进行cmake

这里写图片描述

貌似一个错误都没

Found OGREstatic     : OFFcomponents : Bites;HLMS;MeshLodGenerator;Overlay;Paging;Property;RTShaderSystem;Terrain;Volumeplugins    : Plugin_BSPSceneManager;Plugin_CgProgramManager;Plugin_OctreeSceneManager;Plugin_PCZSceneManager;Plugin_ParticleFX;RenderSystem_GL;RenderSystem_GL3Plus;RenderSystem_Direct3D9;RenderSystem_Direct3D11media      : D:/Package/Ogre1.10/ogre-master/build/sdk/Media
Configuring done

我记得当时有一个错误来着, 但是并没有关系, 出错也是在OGRE_DIR没找到, 只需要将它设置一下就好了, 最后generate得到VS2013的工程文件, 运行D:\Package\Ogre1.10\ogre-master\Samples\Tutorials\build下的OgreTutorialsSample.sln, 然后ALL_BUILD生成一下, 出现了如下错误

这里写图片描述

很简单, 没找到std::cerr, 我们去这个BasicTutorial1.cpp的顶部加上

#include <iostream>
using namespace std;

在重新ALL_BUILD生成一遍就得到了正确的结果, 然后设置一下: 解决方案资源管理器->解决方案属性->启动项目->当前选定内容, 然后运行, 你会发现并运行不了

这里写图片描述

此时我们需要将Debug模式改成Release模型运行, Ok,继续出错

这里写图片描述

貌似是什么东西没读到, 还记得刚才说的两个配置文件么, 它们的具体用途到下一篇博客再说, 总之就是我们的模型文件没有被加载进来, 去瞅瞅resources.cfg, 发现需要在上级目录中存在一个称为Media的文件夹, 里面存储着很多运行需要用到的资源文件, 解决方法是重新设置resources.cfg里面的Media路径, 或者是整个都拷贝过来, 原来的Media在你编译好的D:\Package\Ogre1.10\ogre-master\build\sdk目录中也存在, 我直接拷贝到D:\Package\Ogre1.10\ogre-master\Samples\Tutorials中, 然后再运行第一个案例, 就出结果了, ESC退出:

这里写图片描述

【注】其实也就是需要注意两点:

  • CMake的时候一般都是找路径没找到, 只需要在GUI中设置一下路径就行了, 这一部分不会出太大问题
  • 运行的时候记得选择Release
  • 记得将Media资源文件拷贝到当前工程目录的并列地方
    这里写图片描述
  • 环境变量要注意加到path中, 如果不加的话, 编译没问题, 但是运行可能遇到dll找不到
    这里写图片描述

配置实例——手动档

直接先在VS中建立一个win32应用程序空项目, 在源文件中新建一个main.cpp, 随便复制一个实例的代码过来, 我复制的是第一个实例的Bootstrap.cpp, 然后在项目属性中依次设置

VC++目录->包含目录

这里写图片描述

VC++目录->库目录

这里写图片描述

注意以上两步都要勾选左下角的

这里写图片描述

连接器->输入

OgreBites.lib
winmm.lib
imm32.lib
version.lib
msimg32.lib
D:\Package\Ogre1.10\ogre-master\build\Dependencies\lib\SDL2main.lib
D:\Package\Ogre1.10\ogre-master\build\Dependencies\lib\SDL2.lib
OgreHLMS.lib
OgreMeshLodGenerator.lib
OgreOverlay.lib
OgrePaging.lib
OgreProperty.lib
OgreRTShaderSystem.lib
OgreTerrain.lib
OgreVolume.lib
OgreMain.lib

编译Release出现错误:

错误  3   error C4996: 'Ogre::Resource::Listener::backgroundLoadingComplete': 被声明为已否决 d:\package\ogre1.10\ogre-master\build\sdk\include\ogre\OgreEntity.h 896 1   Ogre1

然后删除属性中C/C++右边的SDL检查对应的是 (/sdl)即可编译成功

运行前别忘记

  • 拷贝两个cfg文件(plugins.cfgresources.cfg)到当前工程目录

  • 拷贝media到当前工程目录的上一级目录中

然后再运行就能出结果.

————————我是分割线————————

感觉很多人可能不知道我说的当前工程目录怎么找, 很简单, 对着解决方案下面你所建立的工程右键,选择在文件资源管理器中打开文件夹

这里写图片描述

也就是说两个cfg就是放在这个打开的目录中, media是在它的上级目录

后记

所以这篇博客就告诉我们, 要注意好Ogre每个版本对应的Tutorial, 不同的版本对应的实例不同, 如果没对应好, 可能会走进大坑. 因而后续的学习就会从这里或者这里的教程开始, 而不是这里

手动档工程打包: 链接:https://pan.baidu.com/s/1sl2ubdr 密码:vrak

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Ogre-windows】旋转矩阵及位置解析

前言 这篇博客主要针对三种问题 如何创建动画帧如何获取全局位置如何计算全局旋转矩阵 仿真环境为VS2013Ogre1.10.9与matlab验证 创建动画帧 这里只做一个简单的实验: 将自带的人物模型Jaiqua的run运动给新创建的运动myrun中并播放&#xff0c;直接贴代码了 void JaiQua:…

BP推导——续

前言 之前有证明过一次人工神经网络——【BP】反向传播算法证明 &#xff0c;但是回头看的时候&#xff0c;有很多地方非常不严谨&#xff0c;特此拿出来再单独证明一次BP&#xff0c;并严格保证其严谨性。如果想看看粗略的证明&#xff0c;可以去看我之前的博客&#xff0c;毕…

matlab学习——强连通分量

前言 最近motion graph相关实验&#xff0c;发现实现运动过渡需要构建运动图&#xff0c;而为了避免运动过渡陷入死胡同&#xff0c;需要对图结构进行裁剪&#xff0c;方法就是计算图模型的极大强联通分量&#xff0c;但是自己懒得去实现&#xff0c;所以就去搜了一下matlab中…

【音频处理】离散傅里叶变换

前言 最近复现音乐驱动舞蹈的文章《Dancing-to-Music Character Animation》&#xff0c;用到了与傅里叶变换很相似的称为常Q变换的方法去分割音乐&#xff0c;所以对傅里叶变换做了一个小了解&#xff0c;本文不深入各种乱糟糟的理论&#xff0c;比如什么蝶形算法啥的&#x…

【音频处理】短时傅里叶变换

前言 上一篇博客讲了离散傅里叶变换&#xff0c;里面的实例是对整个信号进行计算&#xff0c;虽然理论上有N点傅里叶变换(本博客就不区分FFT和DFT了&#xff0c;因为它俩就是一个东东&#xff0c;只不过复杂度不同)&#xff0c;但是我个人理解是这个N点是信号前面连续的N个数值…

【theano-windows】学习笔记十九——循环神经网络

前言 前面已经介绍了RBM和CNN了&#xff0c;就剩最后一个RNN了&#xff0c;抽了一天时间简单看了一下原理&#xff0c;但是没细推RNN的参数更新算法BPTT&#xff0c;全名是Backpropagation Through Time。 【注】严谨来说RNN有两个称呼&#xff1a;①结构上递归的recursive n…

【theano-windows】学习笔记二十——LSTM理论及实现

前言 上一篇学习了RNN&#xff0c;也知道了在沿着时间线对上下文权重求梯度的时候&#xff0c;可能会导致梯度消失或者梯度爆炸&#xff0c;然后我们就得学习一波比较常见的优化方法之LSTM 国际惯例&#xff0c;参考网址&#xff1a; LSTM Networks for Sentiment Analysis …

刚体运动学——欧拉角、四元数、旋转矩阵

前言 刚体运动旋转一般用&#xff1a;欧拉角、四元数、轴角对等表示&#xff0c;在对某个坐标旋转的时候&#xff0c;只需将欧拉角或四元数转换为旋转矩阵&#xff0c;并与原始坐标相乘&#xff0c;便可得到旋转以后的坐标。这里主要看看欧拉角、四元数和旋转矩阵。 国际惯例…

刚体运动学-四元数插值

前言 之前对写了一篇关于刚体运动学相关知识博客&#xff1a;刚体运动学——欧拉角、四元数、旋转矩阵&#xff0c;本篇博客就举例来说明&#xff0c;如何在运动捕捉数据中进行四元数插值。 国际惯例&#xff0c;参考博客&#xff1a; 探讨&#xff1a;向量&#xff08;方向…

【TensorFlow-windows】学习笔记一——基础理解

前言 因为Theano已经停止更新了&#xff0c;所以在前面学完Theano搭建RBM,CNN,RNN相关结构以后&#xff0c;还是得选择一个主流框架的&#xff0c;由于我自身的学习最终是向强化学习靠近&#xff0c;可能用到的仿真环境是openai gym&#xff0c;所以选择了继续学习TensorFlow&…

【TensorFlow-windows】学习笔记二——低级API

前言 上一篇博客初步了解了tensorflow中建立机器学习模型的方法&#xff1a;可以使用eager execution和graph execution两种模式&#xff0c;可以使用高级API estimator中已经封装好的模型&#xff0c;也可以自己创建estimator&#xff0c;更重要的是我们也可以使用低级API自行…

【TensorFlow-windows】学习笔记五——自编码器

前言 上一篇博客介绍的是构建简单的CNN去识别手写数字&#xff0c;这一篇博客折腾一下自编码&#xff0c;理论很简单&#xff0c;就是实现对输入数据的重构&#xff0c;具体理论可以看我前面的【theano-windows】学习笔记十三——去噪自编码器 国际惯例&#xff0c;参考博客&…

【TensorFlow-windows】学习笔记六——变分自编码器

#前言 对理论没兴趣的直接看代码吧&#xff0c;理论一堆&#xff0c;而且还有点复杂&#xff0c;我自己的描述也不一定准确&#xff0c;但是代码就两三句话搞定了。 国际惯例&#xff0c;参考博文 论文&#xff1a;Tutorial on Variational Autoencoders 【干货】一文读懂…

【TensorFlow-windows】学习笔记七——生成对抗网络

前言 既然学习了变分自编码(VAE)&#xff0c;那也必须来一波生成对抗网络(GAN)。 国际惯例&#xff0c;参考网址&#xff1a; 论文: Generative Adversarial Nets PPT:Generative Adversarial Networks (GANs) Generative Adversarial Nets in TensorFlow GAN原理学习笔记…

Openpose——windows编译(炒鸡简单)

前言 最近准备看看rtpose的代码&#xff0c;发现已经由openpose这个项目维护着了&#xff0c;由于经常在windows下调试代码&#xff0c;所以尝试了一下如何在windows下编译openpose源码&#xff0c;整体来说非常简单的。 国际惯例&#xff0c;参考博客&#xff1a; [OpenPos…

强化学习——Qlearning

前言 在控制决策领域里面强化学习还是占很重比例的&#xff0c;最近出了几篇角色控制的论文需要研究&#xff0c;其中部分涉及到强化学习&#xff0c;都有开源&#xff0c;有兴趣可以点开看看&#xff1a; A Deep Learning Framework For Character Motion Synthesis and Edit…

【TensorFlow-windows】keras接口学习——线性回归与简单的分类

前言 之前有写过几篇TensorFlow相关文章&#xff0c;但是用的比较底层的写法&#xff0c;比如tf.nn和tf.layers&#xff0c;也写了部分基本模型如自编码和对抗网络等&#xff0c;感觉写起来不太舒服&#xff0c;最近看官方文档发现它的教程基本都使用的keras API&#xff0c;这…

【TensorFlow-windows】keras接口——卷积手写数字识别,模型保存和调用

前言 上一节学习了以TensorFlow为底端的keras接口最简单的使用&#xff0c;这里就继续学习怎么写卷积分类模型和各种保存方法(仅保存权重、权重和网络结构同时保存) 国际惯例&#xff0c;参考博客&#xff1a; 官方教程 【注】其实不用看博客&#xff0c;直接翻到文末看我的c…

【TensorFlow-windows】keras接口——BatchNorm和ResNet

前言 之前学习利用Keras简单地堆叠卷积网络去构建分类模型的方法&#xff0c;但是对于很深的网络结构很难保证梯度在各层能够正常传播&#xff0c;经常发生梯度消失、梯度爆炸或者其它奇奇怪怪的问题。为了解决这类问题&#xff0c;大佬们想了各种办法&#xff0c;比如最原始的…

【TensorFlow-windows】keras接口——卷积核可视化

前言 在机器之心上看到了关于卷积核可视化相关理论&#xff0c;但是作者的源代码是基于fastai写的&#xff0c;而fastai的底层是pytorch&#xff0c;本来准备自己用Keras复现一遍的&#xff0c;但是尴尬地发现Keras还没玩熟练&#xff0c;随后发现了一个keras-vis包可以用于做…