查看: 1305|回复: 4

关于正向渲染和RTT的问题

[复制链接]

该用户从未签到

发表于 2010-6-3 15:44:28 | 显示全部楼层 |阅读模式
我现在有一个模型节点,想对它进行正向和背向渲染,并且渲染到纹理,具体代码设置如下:
int tex_width = 128;
int tex_height = 128;
osg::Texture2D* texture2D = new osg::Texture2D;
    texture2D->setTextureSize(tex_width, tex_height);
    texture2D->setInternalFormat(GL_RGBA);
    texture2D->setFilter(osg::Texture2D::MIN_FILTER,osg::Texture2D:INEAR);
    texture2D->setFilter(osg::Texture2D::MAG_FILTER,osg::Texture2D::LINEAR);

osg::StateSet* stateset = node->getOrCreateStateSet();
stateset->setMode(osg::StateAttribute::CULLFACE,osg::StateAttribute::OFF);//相应的正向是ON
//camera
osg::Camera *camera = new osg::Camera();
const osg::BoundingSphere& bs = node->getBound();
    if (!bs.valid())
    {
  std::cout<<"the box is not valid!"<<std::endl;
    }
    float znear = 1.0f*bs.radius();
    float zfar  = 3.0f*bs.radius();
        // 2:1 aspect ratio as per flag geometry below.
    float proj_top   = 0.25f*znear;
    float proj_right = 0.5f*znear;
    znear *= 0.9f;
    zfar *= 1.1f;
// set up projection.
camera->setViewport(0,0,tex_width,tex_height);
    camera->setProjectionMatrixAsFrustum(-proj_right,proj_right,-proj_top,proj_top,znear,zfar);
    // set view
    camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
    camera->setViewMatrixAsLookAt(bs.center()-osg::Vec3(0.0f,2.0f,0.0f)*bs.radius(),bs.center(),osg::Vec3(0.0f,0.0f,1.0f));
camera->setRenderOrder(osg::Camera:RE_RENDER);
camera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);
camera->attach(osg::Camera::COLOR_BUFFER,texture2D,0,0,false,0,0);
return texture2D;
运行之后就给出现中断了,不知道什么缘故?

该用户从未签到

发表于 2010-6-3 15:53:51 | 显示全部楼层
camera加入到Viewer了吗?
尝试camera->setDataVariance( osg::Object:YNAMIC );

该用户从未签到

发表于 2010-6-3 16:05:33 | 显示全部楼层
这里新建的camera节点被传递给谁了?

该用户从未签到

 楼主| 发表于 2010-6-3 17:06:28 | 显示全部楼层
3# array
camera没有传递给任何节点。就是个空的点

该用户从未签到

发表于 2010-6-4 08:23:27 | 显示全部楼层
那是不允许的,如果RTT Camera不在节点树中遍历,而Camera的结果又要设置给节点树中的Texture,必然会出错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表