调试

作者: osgChina 发布于2018-10-16 10:37:32 分类 : 文档

1 尽量多的阅读文档. 
a) 可以在
书籍菜单项下找到OSG的相关书籍,中英尽现。个人觉得必读的书有array的《最长的一帧》,《OSG三维渲染引擎设计与实现》,这是讲原理的,其它偏重于实际应用的书籍,择看便可。
b) 熟悉中英文的OSG官方网站,
英文链接中文链接,中文论坛,英文上还有个 FAQ
c) 可以订阅右侧邮件列表,查看交流信息 
mailing list archives 
如果你是个初学者,你的问题会得到很快的答复。

2 使用源码 
如果是个软件开发人员,是必须要调试软件源码的,这样你才能知道代码里有什么以及哪些地方是值得注意的。《最长的一帧》就是array调试frame函数解读的成果,可以学习很多知识。因此调试代码是必须的,要看类图、类功能、各种注释等,这也会让你避免使用到OSG的一些为了兼容性保留接口而废弃的功能,比如Geometry::setVertexIndices()。

3 读函数注释 
看见代码中有注释,是必须要警示的,因为很可能里面提示的有重要的信息,使用方法等。 
4 查看 OpenGL 调用 
定位简单的渲染问题,可以使用一些OpenGL跟踪工具查看OpenGL的调用情况。这几个工具都是可以的:
BuGLeglInterceptglTracegDEBugger 
如果你懂OpenGL,那就通过这种调试方法很容易看出问题。如果不懂,就买本红宝蓝宝天天看吧。
5 使用调试打印
将OSG_NOTIFY_LEVEL 设置为 INFO 或 DEBUG 然后看打印,OSG的打印机制很成熟,一般而言会清楚的告诉你哪里出了问题。

6 输出你的场景到.osg文件

将你的场景(或部分场景)输出到.osg文件当中,然后用写字板打开,看看里面的结构是不是符合你的预期。 
7 使用优化 
使用优化中的CHECK_GEOMETRY 功能,以让其检查Geometry中的常见错误,比如使用了颜色逐顶点绑定,但是颜色数组中的颜色数量却不够等等。

8 非常熟练的使用osgconv 
比如把你的场景输出到.osg之后,打开OSG_NOTIFY_LEVEL到DEBUG或INFO,然后使用osgconv运行Optimizer的CHECK_GEOMETRY特性,则会出打印看模型是否有问题。

9 非常熟练的使用osgViewer 
osgViewer具有非常多的功能,可以统计顶点数量、查看帧速、截屏以及按路径运动等等。
10 考虑购买一个技术支持 
如果需要专业的帮助,可以向 Paul Martz 或者 Robert Osfield购买专业的技术支持。它们会给你解答的非常详细,只要你付了钱。或者找其它的专业服务机构。