查看: 611|回复: 0

求助为什么设置的一维纹理,显示出来的是二维纹理。各路大神帮帮忙。

[复制链接]

该用户从未签到

发表于 2016-11-26 20:10:26 | 显示全部楼层 |阅读模式
代码如下:
void CMrFaceGroup::Init()
{
        m_pGeomNode = new CMrBaseGeode();
        m_pGeomNode->setDataVariance(osg::Object:YNAMIC);
        addChild(m_pGeomNode);

        osg::StateSet* state = m_pGeomNode->getOrCreateStateSet();
        //osg::StateSet* state = new osg::StateSet;
        state->setMode(GL_BLEND, osg::StateAttribute::OFF);
        state->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
        state->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON);

        m_pTexture1D = new osg::Texture1D;
        m_pTexture1D->setWrap(osg::Texture1D::WRAP_S, osg::Texture1D::CLAMP);
        m_pTexture1D->setWrap(osg::Texture1D::WRAP_T, osg::Texture1D::CLAMP);
        m_pTexture1D->setFilter(osg::Texture1D::MIN_FILTER, osg::Texture1D::NEAREST);
        m_pTexture1D->setFilter(osg::Texture1D::MAG_FILTER, osg::Texture1D::NEAREST);
        m_pTexture1D->setResizeNonPowerOfTwoHint(false);
        osg::ref_ptr<osg::Image> pImage = CreateImage();
        if (pImage != NULL)
        {
                m_pTexture1D->setImage(pImage);
        }
        state->setTextureAttribute(0, m_pTexture1D, osg::StateAttribute::OVERRIDE);
        state->setTextureMode(0, GL_TEXTURE_1D, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
        state->setTextureMode(0, GL_TEXTURE_2D, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
        state->setTextureMode(0, GL_TEXTURE_3D, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
        osg::Material* material = new osg::Material;
        state->setAttribute(material, osg::StateAttribute::OVERRIDE);
        m_pGeomNode->setStateSet(state);
}
为什么不能上传图片?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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