我试图设置一个带有代码块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)
您的指导意见将被提及,
答案 0 :(得分:2)
异常不是抱怨源目录或外部依赖项。它抱怨丢失plugins.cfg
文件。日志中最相关的一行是:
OGRE EXCEPTION(6:FileNotFoundException):' plugins.cfg'文件未找到!在...
该文件的位置传递给Root的构造函数。演示可能使用working directory的根。确保正确设置工作目录,并且文件位于该路径中。
请参阅本指南Setting Up An Application - CodeBlocks
如果要在Code :: Blocks中运行可执行文件,则需要设置工作目录'和'命令'在这样的项目设置中:(参见该页面的图像)
您可以找到有关初始化的更多基本信息以及此tutorial
中plugins.cfg的内容答案 1 :(得分:2)
关于你的第二个错误:
正如消息中明确指出的那样,您的Cg程序会尝试使用比计算机上可用的寄存器更多的寄存器。这取决于显卡(您使用的是哪一个)?
根据您要实现的目标,您可能需要稍微调整着色器,以使它们保持在硬件支持的范围内。
例如,请参阅此Ogre3D forums thread,其中 DualQuaternion 着色器发生类似情况,用户只是减少了骨骼数量。在ATI卡上,该着色器通常只支持24个骨骼。
重要提示:该区域的许多问题已通过Ogre v1.9修复,因此我建议您尽可能更新。 v1.9已经稳定了很长一段时间(事实上我们已经在准备下一个版本v.1.0)。