我要发帖 回复

正式会员

8

主题

55

积分

0

专家分

:

私信
发表时间 : 2009-4-4 19:03:18 | 浏览 : 2090    评论 : 3
环境为:VS2003,WinXP(SP2)
代码如下:
======================================================================================
#include  
#include  
#include  
#include  
#include  

using std::endl;

#pragma comment(lib,"osg.lib")
#pragma comment(lib,"osgDB.lib")

osg::ref_ptr createSceneGraph()
{
    // Create an object to store geometry in.
    osg::ref_ptr geom = new osg::Geometry;

    // Create an array of four vertices.
    osg::ref_ptr v = new osg::Vec3Array;
    geom->setVertexArray( v.get() );
    v->push_back( osg::Vec3( -1.f, 0.f, -1.f ) );
    v->push_back( osg::Vec3( 1.f, 0.f, -1.f ) );
    v->push_back( osg::Vec3( 1.f, 0.f, 1.f ) );
    v->push_back( osg::Vec3( -1.f, 0.f, 1.f ) );

    // Create an array of four colors.
    osg::ref_ptr c = new osg::Vec4Array;
    geom->setColorArray( c.get() );
    geom->setColorBinding( osg::Geometry::BIND_PER_VERTEX );
    c->push_back( osg::Vec4( 1.f, 0.f, 0.f, 1.f ) );
    c->push_back( osg::Vec4( 0.f, 1.f, 0.f, 1.f ) );
    c->push_back( osg::Vec4( 0.f, 0.f, 1.f, 1.f ) );
    c->push_back( osg::Vec4( 1.f, 1.f, 1.f, 1.f ) );

    // Create an array for the single normal.
    osg::ref_ptr n = new osg::Vec3Array;
    geom->setNormalArray( n.get() );
    geom->setNormalBinding( osg::Geometry::BIND_OVERALL );
    n->push_back( osg::Vec3( 0.f, -1.f, 0.f ) );

    // Draw a four-vertex quad from the stored data.
    geom->addPrimitiveSet(
        new osg::DrawArrays( osg::PrimitiveSet::QUADS, 0, 4 ) );

    // Add the Geometry (Drawable) to a Geode and
    //   return the Geode.
    osg::ref_ptr geode = new osg::Geode;
    geode->addDrawable( geom.get() );

    return geode.get();
}

int main( int, char** )
{
    osg::ref_ptr root = createSceneGraph();
    if (!root.valid())
        osg::notify(osg::FATAL) <<
                "Failed in createSceneGraph()." << endl;

    bool result = osgDB::writeNodeFile(
            *(root.get()), "Simple.osg" );

    if ( !result )
        osg::notify(osg::FATAL) <<
            "Failed in osgDB::writeNode()." << endl;
}
======================================================================================
附加头文件目录和附加链接库目录都设置好了,编译时出错:
error LNK2019 无法解析的外部符号 "_declspec(dllimport) pulic : class std::basic_ostream<char,struct std::char_traits<char>>&_thiscall std::~~~~~~~`
一共8个链接错误,而且都是LNK2019,程序在链接是没有找到包含std的库文件,
如果去掉代码中的osg::notify语句,编译通过,
哪位大虾告诉我为什么?怎么改能够让它链接通过啊!
-------------------------------------------------------
还有,Navy的例子默认都会全屏运行,这样对查看std::cout输出很不方便,怎么把程序改为窗体显示而非全屏显示啊?

最近VR访客

array 评论于2009-4-4 22:57:20
如果可能的话,最好附带您的整个实验工程文件,这样有助于大家进一步理解和帮助您解决问题。
至于如何用窗口方式运行osg,请参看osgwindows例子
zealotsparc 评论于2009-4-5 23:12:02
我的电脑是双显示器,viewer默认会打开两个窗口,这两个窗口在两个显示器上全屏,共同显示一个场景的内容。
如果我要将它改成单个窗口显示呢?
---------------------------------------------
还有就是一个显示器中的窗体显示的场景,把这个窗口拖放到另一显示器中,显示的场景中的纹理和贴图会丢失,不知道为什么?
如果窗体一半在原先的显示器中,一半在另一个显示器中,则窗体在另一个显示器中的场景会丢失贴图和纹理。

[ 本帖最后由 zealotsparc 于 2009-4-5 11:16 PM 编辑 ]
FlySky 评论于2009-4-6 18:58:13
用双显卡,,或者一块高性能的显卡,,可以打双屏的~~~~~~

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2022-1-22 05:18 PM

返回顶部