查看: 1479|回复: 2

关于模板缓存的问题

[复制链接]

该用户从未签到

发表于 2011-1-17 10:52:27 | 显示全部楼层 |阅读模式
我在模板缓存中生成掩码遮罩,可以很完好地完成功能需求,在划定区域可以很好地挡住部分物体不让其呈现。
可是现在又面临一个问题,就是说,我若将场景相机的输出给定向到图片,即不向屏幕上绘制,而是向纹理图片上绘制。此时,模板缓存的遮罩效果就完全不起作用了。
这个有办法解决么?

该用户从未签到

发表于 2011-1-17 11:13:30 | 显示全部楼层
我认为可以起到作用,不知道您的输出是如何实现的

该用户从未签到

 楼主| 发表于 2011-1-17 14:47:15 | 显示全部楼层
呵呵,就我这几天提出的问题,其实都是一环套一环的,目的就是为了我手头的这个虚拟现实。我做了一个Camera相机节点,挂接在根节点的下方。需要渲染的所有节点都挂在该相机下面。该相机直接使用attach方法,如下代码:

  m_pBufferTexture = new osg::Texture2D;
  m_pBufferTexture->setName("Buffer Texture For Scene Color");
  m_pBufferTexture->setTextureSize(1024, 768);
  m_pBufferTexture->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D:INEAR);
  m_pBufferTexture->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR);
  m_pBufferTexture->setInternalFormat(GL_RGBA);

  m_pPreRenderCamera = new osg::Camera;
  m_pPreRenderCamera->setRenderOrder(osg::Camera:RE_RENDER, INT_MAX);
  m_pPreRenderCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
  m_pPreRenderCamera->setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);
  m_pPreRenderCamera->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
  m_pPreRenderCamera->setClearColor(osg::vec4(0.0, 0.0, 0.0, 1.0));
  m_pPreRenderCamera->setViewMatrix(osg::Matrixd::identity());
  m_pPreRenderCamera->setProjectionMatrixAsPerspective(45.0, 1.0, 1.0, 100.0);

  m_pPreRenderCamera->setName("ViewEx Pre Render Camera");
  m_pPreRenderCamera->attach(osg::Camera::COLOR_BUFFER, m_pBufferTexture.get());
  m_pPreRenderCamera->setViewport(0, 0, 1, 1);

上述代码中,m_pPreRenderCamera将直接挂接到场景的根节点下面,我需要渲染的场景(一座城市),则挂接在m_pPreRenderCamera的下面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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