Ошибка при загрузке текстуры с помощью 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

Изображение правильно размещено в моем каталоге, и я понятия не имею, почему оно не работает, так как я скомпилировал другой проект, в котором используются текстуры.


person user3302089    schedule 12.02.2014    source источник
comment
ReadImageFile возвращает указатель на изображение. Вы не должны называть это новым   -  person sajas    schedule 12.02.2014
comment
Да, это работает! Мерси, мек!   -  person user3302089    schedule 12.02.2014
comment
@sajas Если ваш совет сработал, опубликуйте его в комментарии, чтобы ОП мог его принять.   -  person Adri C.S.    schedule 13.11.2014
comment
@AdriC.S. Спасибо. Я добавил это.   -  person sajas    schedule 13.11.2014


Ответы (1)


ReadImageFile возвращает указатель на изображение. Таким образом, вы можете напрямую присвоить возвращаемый указатель вашей переменной: im.

osg::Image* im = osgDB::readImageFile("land_shallow_topo_2048.jpg");
person sajas    schedule 13.11.2014