|
刚开始学OSG,今天编译运行了array《OpenSceneGraph 3.0 Beginner's Guide》 第4章的例程“quickly creating simple objects”,运行结果有问题。该程序画了三个几何体:长方体(白色)、圆锥(绿色)、球(蓝色)。代码如下:
osg::ref_ptr<osg::ShapeDrawable> shape1 = new osg::ShapeDrawable;
shape1->setShape( new osg::Box(osg::Vec3(-3.0f, 0.0f, 0.0f), 2.0f, 2.0f, 1.0f) );
osg::ref_ptr<osg::ShapeDrawable> shape2 = new osg::ShapeDrawable;
shape2->setShape( new osg::Sphere(osg::Vec3(3.0f, 0.0f, 0.0f), 1.0f) );
shape2->setColor( osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f) );
osg::ref_ptr<osg::ShapeDrawable> shape3 = new osg::ShapeDrawable;
shape3->setShape( new osg::Cone(osg::Vec3(0.0f, 0.0f, 0.0f), 1.0f, 1.0f) );
shape3->setColor( osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f) );
osg::ref_ptr<osg::Geode> root = new osg::Geode;
root->addDrawable( shape1.get() );
root->addDrawable( shape2.get() );
root->addDrawable( shape3.get() );
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
viewer->setSceneData( root.get() );
return viewer->run();
但是我的程序中,三个几何体均为白色。如下图:
如果注释部分代码,只显示一个几何体,颜色显示正常。
编译环境为官方网站提供的BIN文件包 + VC2008sp1
后来改用OSG2.8.5,显示效果正常。
本以为事情到此就为止了,这只不过是OSG3.01的一个BUG。但是后来换了一个机器,结果发现用OSG3.0.1编译的程序运行又正常了。这下我就蒙了,为啥呢?因为这两个机器实际上是同一个vmWare虚拟机的拷贝,只不过主机不同,有问题的那个主机是ATI显卡,支持OpenGL2.1;没问题的那个主机是intel内置显卡,仅支持OpenGL1.4。
另外,在运行正常的那个主机上的虚拟机运行时提示:
Windows Error #127: [Screen #0] ChooseMatchingPixelFormat() - wglChoosePixelFormatARB extension not found, trying GDI. Reason: 找不到指定的程序。
Rendering in software: pixelFormatIndex 3
不知道是不是和这有关?
明天准备试试OSG3.2.0 |
|