2014-02-12 101 views
1

我試圖與OpenSceneGraph的動畫,但我不能將此代碼載入紋理:錯誤加載紋理OpenSceneGraph的

osg::ref_ptr<osg::Node> createSceneGraph(){ 
    osg::ref_ptr<osg::Group> root = new osg::Group; 
    osg::ref_ptr<osg::MatrixTransform> m1 = new osg::MatrixTransform(); 
    root->addChild(m1.get()); 

    // creer sphere 
    osg::ref_ptr<osg::Geode> terre = new osg::Geode(); 
    terre->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(0, 0, 4), 2))); 
    m1->addChild(terre); 

    // ajouter texture 
    osg::Image* im = new osgDB::readImageFile("land_shallow_topo_2048.jpg"); 
    osg::Texture2D* tex = new osg::setImage(im); 

    return root; 
} 

int main() 
{ 
    osg::ref_ptr<osg::Node> root = createSceneGraph(); 
    osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer; 
    viewer->setUpViewInWindow(32, 32, 1024, 768); 
    viewer->setSceneData(root.get()); 
    osg::ref_ptr<osg::Camera> camera = new osg::Camera; 
    camera->setProjectionMatrix(osg::Matrix::perspective(60.0,1.333,0.01,100000.0)); 
    camera->setViewMatrix(osg::Matrix::identity()); 
    viewer->setCamera(camera); 
    return viewer->run(); 

} 

這是錯誤:

/home/yoyo/TP_avion_yoyo/main.cpp:39: erreur : cannot convert 'int*' to 'osg::Image*' in initialization 

的圖像被正確放置在我的目錄中,我不知道爲什麼它不起作用,因爲我編譯了另一個使用紋理的項目。

+3

ReadImageFile正在返回指向Image的指針。你不應該叫它新的 – sajas

+0

是的,這是有效的! Merci,mec! – user3302089

+0

@sajas如果你的建議有效,將它作爲評論發佈,以便OP可以接受它。 –

回答

1

ReadImageFile方法正在返回一個指向圖像的指針。因此,您可以直接將返回的指針分配給您的變量:im

osg::Image* im = osgDB::readImageFile("land_shallow_topo_2048.jpg");