设为首页 加入收藏

TOP

2.4 在LINUX C++中运行第一个程序(2)
2013-10-07 16:05:50 来源: 作者: 【 】 浏览:69
Tags:2.4 LINUX 运行 一个 程序

2.4  在LINUX C++(www.cppentry.com)中运行第一个程序(2)

上述命令中,有关参数所对应的路径及库文件如表2.3所示。如果源代码仅一两个文件,采用这种方式非常简单,如果是一个比较大的工程,行命令编译连接方式不可取,我们将采用Eclipse Helios构造编译整个工程。有关方式稍后再做说明。

表2.3  G++编译连接命令参数对应的路径

  < xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

默认安装对应路径

{pythoninclude}

/usr/include/python2.6/

{panda3dinclude}

/usr/include/panda3d/

{panda3dlibs}

/usr/lib/panda3d/ /usr/lib/

libp3framework.so libpanda.so libpandafx.so libpandaexpress.so

libp3dtoolconfig.so libp3dtool.so libp3pystub.so libp3direct.so


接下来,我们编写一系列cxx源文件,同样地创建一片青葱绿地和竹林,让憨态可掬的熊猫来回溜达向大家问好。

打开编辑器,创建一系列名称为HelloPanda3D-0X.cxx的源文件,按步骤编写代码。

Panda3D引擎典型的C++(www.cppentry.com)代码程序段结构如HelloPanda3D-01.cxx所示:

  1. #include "pandaFramework.h"  
  2. #include "pandaSystem.h"  
  3.  
  4. PandaFramework framework;  
  5.  
  6. int main(int argc, char *argv[]) {  
  7. //打开一个新窗口框架  
  8. framework.open_framework(argc, argv);  
  9. //设置窗口标题  
  10. framework.set_window_title("Hello Panda3D World");  
  11. //打开窗口  
  12. WindowFramework *window = framework.open_window();  
  13. //检查是否载入窗口  
  14. if (window != (WindowFramework *)NULL) {  
  15. nout << "Opened the window successfully!\n";  
  16.  
  17. window->enable_keyboard();  //允许接收键盘事件  
  18. window->setup_trackball();  //允许相机移动  
  19.  
  20. //其他代码  
  21.  
  22. //引擎主循环  
  23. framework.main_loop();  
  24. } else {  
  25. nout << "Could not load the window!\n";  
  26. }  
  27. //关闭引擎框架  
  28. framework.close_all_windows();  
  29. framework.close_framework();  
  30. return (0);  
  31. }  

上述代码包含了pandaFramework.h及pandaSystem.h头文件,已经定义的框架类的实例会自动加载大部分Panda3D模块。其中的main_loop()函数构成游戏引擎的主循环,渲染主框架,处理后台任务。一般不返回,只需在代码最后一行进行调用。与mytest.cxx不同的是,典型结构中采用了异常分支处理方式,检查是否成功载入了窗口,并分别调用enable_keyboard()及setup_trackball()允许窗口处理键盘及相机移动事件。窗口类还包括一系列相关函数,例如设置窗口背景色,获取相机数等,有关内容可以参看函数手册。当然,开发者还可以进一步使用try...catch...finally等异常处理结构开发更健壮的代码,如果有兴趣可自行尝试。本书主要探讨与Panda3D游戏引擎有关的问题。

启动Panda3D引擎后,主要使用数据结构访问控制各种游戏元素。其中,Scene Graph以树的方式容纳各种需要渲染的对象。树的根对象是Render。场景对象则通过reparent_to()设置自己的父实例。随后,使用set_scale()、set_pos()调整模型比例和位置。将代码修改如下(HelloPanda3D-02.cxx):

  1. #include "pandaFramework.h"  
  2. #include "pandaSystem.h"  
  3.  
  4. PandaFramework framework;  
  5.  
  6. int main(int argc, char *argv[]) {  
  7. //打开一个新窗口框架并设置窗口标题  
  8. framework.open_framework(argc, argv);  
  9. framework.set_window_title("My Panda3D Window");  
  10. WindowFramework *window = framework.open_window();  
  11. //检查是否载入窗口  
  12. if (window != (WindowFramework *)NULL) {  
  13.  
  14. window->enable_keyboard(); //允许接收键盘事件  
  15. //window->setup_trackball(); //允许相机移动  
  16.  
  17. //载入环境模型  
  18. NodePath environ =   
  19. window->load_model(framework.get_models(), "models/environment");  
  20. //设置环境模型的父实例  
  21. environ.reparent_to(window->get_render());  
  22. //对模型进行比例及位置调整  
  23. environ.set_scale(0.25, 0.25, 0.25);  
  24. environ.set_pos(-8, 42, 0);  
  25.  
  26. //引擎主循环  
  27. framework.main_loop();  
  28. } else {  
  29. nout << "Could not load the window!\n";  
  30. }  
  31. //关闭引擎框架  
  32. framework.close_all_windows();  
  33. framework.close_framework();  
  34. return (0);  
  35. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.4 在LINUX C++中运行第一个程序.. 下一篇2.4 在LINUX C++中运行第一个程序..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)