在 Win8 中使用 GCC、C::B 安装 Ogre3D
Posted
技术标签:
【中文标题】在 Win8 中使用 GCC、C::B 安装 Ogre3D【英文标题】:Ogre3D installation with GCC, C::B in Win8 【发布时间】:2014-03-12 11:31:57 【问题描述】:我正在尝试使用代码块 12.11 设置 Ogre3D v1.8.1,其中配置了 GCC 4.7.0。我为MinGW下载了Ogre3D的预编译版本,启动示例编译和执行程序没有错误,但是在初始化Ogre3D(驱动程序选择屏幕)期间出现一些错误并且应用程序冻结。网上搜一搜发现,网上有很多帖子,很多人都卡在那个阶段的节目过不去了。
Ogre3D scrren 崩溃后的 C::B 编译器报告
In __cxa_throw () (D:\Ogre3D_181\OgreSDK_MinGW_v1-8-1\bin\Debug\OgreMain_d.dll)
87 ..\..\..\..\..\OgreMain\src\OgreConfigFile.cpp: No such file or directory.
#1 0x009507e9 in Ogre::ConfigFile::loadDirect (this=0x28fc48, filename=...,
separators=..., trimWhitespace=true) at ..\..\..\..\OgreMain\src\OgreConfigFile.cpp:87
Debugger finished with status 0
Ogre3D.log报告如下图
13:19:34: MovableObjectFactory for type 'BillboardSet' registered.
13:19:34: MovableObjectFactory for type 'ManualObject' registered.
13:19:34: MovableObjectFactory for type 'BillboardChain' registered.
13:19:34: MovableObjectFactory for type 'RibbonTrail' registered.
13:19:34: OGRE EXCEPTION(6:FileNotFoundException): 'plugins.cfg' file not found! in
ConfigFile::load at ..\..\..\..\..\OgreMain\src\OgreConfigFile.cpp (line 88)
根据 Ogre3D 和 C::B 产生的抱怨,我似乎没有正确传递正确的 include/source/lib 目录和外部依赖项,但实际上我已经按照 Ogre3D 官方网站的说明进行操作,并且我'确定这是正确的,否则编译器应该在编译期间抛出异常。与此同时,其他用户即使正确配置了环境也遇到了此类问题。
另一个错误
07:09:37: OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program
Ogre/DualQuaternionHardwareSkinningTwoWeightsTwoPhaseCg: The compile returned an
error.DualQuaternion_Common.cg(167) : warning C7019: "blendWgt" is too large for
semantic
"BLENDWEIGHT", which is size 1
(0) : error C6007: Constant register limit exceeded; more than 96 constant registers
needed to compiled program
(0) : error C6007: Constant register limit exceeded; more than 96 constant registers
needed to compiled program
(0) : error C6007: Constant register limit exceeded; more than 96 constant registers
needed to compiled program
in CgProgram::compileMicrocode at
..\..\..\..\..\..\PlugIns\CgProgramManager\src\OgreCgProgramManagerDll.cpp (line 67)
您的指导将不胜感激,
【问题讨论】:
能否请您发布完整的Ogre.log
日志文件。
这里是完整的 Ogre.log dropbox.com/s/6eega7mb38h1evb/Ogre.log
【参考方案1】:
异常不是抱怨源目录或外部依赖项。它抱怨缺少plugins.cfg
文件。日志中最相关的一行是:
OGRE 异常(6:FileNotFoundException):找不到“plugins.cfg”文件!在...
该文件的位置被传递给Root 的构造函数。演示可能使用working directory 的根。确保工作目录设置正确且文件位于该路径中。
请参阅本指南Setting Up An Application - CodeBlocks
如果您想从 Code::Blocks 中运行可执行文件,您需要在项目设置中设置“工作目录”和“命令”,如下所示:(参见该页面中的图片)
您可以在tutorial 中找到有关初始化以及 plugins.cfg 的更多基本信息
【讨论】:
当我超过一个错误时,这次又会出现另一个错误,它是'OGRE EXCEPTION(7:InternalErrorException):我将输出添加到主消息'我不认为它与代码故障有关或语法,很可能是导致差异的插件配置文件,它们带有全套插件,我相信这不是必需的。让我感到困惑的一件事是,如果有任何异常,Ogre 控制台屏幕和 C::B 编译器报告不会报告相同的错误,这是预期的结果吗?【参考方案2】:关于你的第二个错误:
正如消息中明确指出的,您的 Cg 程序试图使用比您的机器上可用的寄存器更多的寄存器。这取决于显卡(您使用的是哪一个)?
根据您要实现的目标,您可能需要稍微调整着色器,使其保持在硬件支持的范围内。
例如,参见 Ogre3D forums thread,其中 DualQuaternion 着色器发生了类似的事情,用户只是减少了骨骼数量。在 ATI 卡上,该着色器通常只支持 24 个骨骼。
重要提示: Ogre v1.9 已修复该领域的许多问题,因此我建议您尽可能更新。 v1.9 已经稳定很久了(事实上我们已经在准备下一个版本 v.1.0)。
【讨论】:
谢谢你,在注释掉一些插件后,尤其是 CGxxx。在 plugins.cfg 文件中,我设法在控制台屏幕中找到了食人魔头。 AFAIU 在我的情况下,它们被不必要地加载只是因为它们带有默认配置。很高兴听到 1.9 更稳定且易于安装。以上是关于在 Win8 中使用 GCC、C::B 安装 Ogre3D的主要内容,如果未能解决你的问题,请参考以下文章