Ogre3D安装与GCC, C::B在Win8

Ogre3D installation with GCC, C::B in Win8

本文关键字:Win8 安装 GCC Ogre3D      更新时间:2023-10-16

我试图设置一个Ogre3D v1.8.1与代码块12.11,其中配置了GCC 4.7.0。我下载了预编译版本的Ogre3D for MinGW,启动示例编译和执行程序没有错误,但在初始化Ogre3D(驱动程序选择界面)时出现一些错误,应用程序冻结。在网上仔细搜索发现,网上有很多帖子,很多人都停留在那个无法通过的程序阶段。

C::B编译器报告Ogre3D屏幕崩溃

 In __cxa_throw () (D:Ogre3D_181OgreSDK_MinGW_v1-8-1binDebugOgreMain_d.dll)
 87 ..........OgreMainsrcOgreConfigFile.cpp: No such file or directory.
 #1  0x009507e9 in Ogre::ConfigFile::loadDirect (this=0x28fc48, filename=...,
 separators=..., trimWhitespace=true) at ........OgreMainsrcOgreConfigFile.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 ..........OgreMainsrcOgreConfigFile.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 
   ............PlugInsCgProgramManagersrcOgreCgProgramManagerDll.cpp (line 67)

感谢您的指导,

不抱怨源目录或外部依赖。它在抱怨缺少plugins.cfg文件。日志中最相关的一行是:

OGRE EXCEPTION(6:FileNotFoundException): 'plugins.cfg'文件不存在!在…

文件的位置被传递给Root的构造函数。演示可能使用工作目录的根目录。确保正确设置了工作目录,并且文件在该路径下。

参见这个指南建立一个应用程序- CodeBlocks

如果你想在Code::Blocks中运行你的可执行文件,你需要在项目设置中设置"工作目录"answers"命令",像这样:(见该页的图片)

你可以在本教程中找到更多关于初始化和plugins.cfg的基本信息

关于你的第二个错误:

正如消息明确指出的那样,您的Cg程序试图使用比机器上可用的寄存器更多的寄存器。这取决于显卡(你用的是哪一个)?

根据你想要实现的目标,你可能需要稍微调整一下着色器,使它们保持在硬件支持的范围内。

看这个Ogre3D论坛的例子,类似的事情发生在DualQuaternion着色器,用户只是减少了骨计数。在ATI卡上,通常在该着色器中只支持24个骨骼。

重要提示:该区域的许多问题已在Ogre v1.9中修复,因此我建议您尽可能更新。V1.9已经稳定了一段时间了(事实上我们已经在准备下一个版本v1.0)。