osgEarth的Rex引擎原理分析(九十三)rex在渲染时会不会纹理单元内容频繁更改

本文分析了osgEarth的Rex引擎在渲染过程中纹理单元内容的频繁更改,指出这会导致CPU和GPU占用率升高。每个图层和瓦片在绘制时都需要向显存上传数据,尤其是瓦片的纹理数据,这种频繁上传是资源消耗的一个重要原因。
摘要由CSDN通过智能技术生成

目标:(九十一)中的问题173

答案:会的,这是rex引擎启动后cpu、gpu占用率高的一个原因。

1、每一个图层(影像层、高层)在绘制时会往显存上传数据

osgEarthDrivers/engine_rex/LayerDrawable.cpp
void
LayerDrawable::drawImplementation(osg::RenderInfo& ri) const
{
    if (_layer)
    {
        if (ds._layerUidUL >= 0)
            ds._ext->glUniform1i(ds._layerUidUL,      (GLint)_layer->getUID());
        if (ds._layerOpacityUL >= 0 && _visibleLayer)
            ds._ext->glUniform1f(ds._layerOpacityUL,  (GLfloat)_visibleLayer->getOpacity());
        if (ds._layerMinRangeUL >= 0 && _imageLayer)
            ds._ext->glUniform1f(ds._layerMinRangeUL, (GLfloat)_imageLayer->getMinVisibleRange());
        if (ds._layerMaxRangeUL >= 0 && _imageLayer)
            ds._ext->glUniform1f(ds._layerMaxRangeUL, (GLfloat)_imageLayer->getMaxVisibleRange());
    }
}

2、每一个瓦片在绘制时,会往显存上传数据,包括往纹理单元上传纹理数据,如果瓦片很多,这种上传是很频繁的。

osgEarthDrivers/engine_rex/DrawTileCommand.cpp
void
DrawTileCommand::draw(osg::RenderInfo& ri, DrawState& dsMaster, osg::Referenced* layerData) const
{
    ds._ext->glUniform4fv(ds._tileKeyUL, 1, _keyValue.ptr());
    ds._ext->glUniform1i(ds._layerOrderUL, (GLint)_order);
    ds._ext->glUniform2fv(ds._elevTexelCoeffUL, 1, _elevTexelCoeff.ptr());
    ds._ext->glUniform2fv(ds._morphConstantsUL, 1, _morphConstants.ptr());

    state.setActiveTextureUnit((*dsMaster._bindings)[s].unit());
    sampler._texture->apply(state);

    ds._ext->glUniformMatrix4fv(samplerState._matrixUL, 1, GL_FALSE, sampler._matrix.ptr());
    ds._ext->glUniform1f(ds._parentTextureExistsUL, sampler._texture.valid() ? 1.0f : 0.0f);

    state.setActiveTextureUnit((*dsMaster._bindings)[s].unit());
    sampler._texture->apply(state);
}

待继续分析列表:

9、earth文件中都有哪些options((九)中问题)

10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)

11、rex地理信息引擎的四梁八柱((九)中问题)

12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中问题)

13、RexTerrainEngineNode中_mapFrame的作用((十二)中问题)

14、地形变形(Terrain morphing)((十二)中问题)

15、地球瓦片过期门限的含义((十二)中问题)

16、高分辨率优先的含义((十二)中问题)

17、OSGEARTH_DEBUG_NORMALS环境变量的作用((十二)中问题)

18、活跃瓦片寄存器的作用((十二)中问题)

19、资源释放器子节点的作用((十二)中问题)

20、共享几何图形池子节点的作用((十二)中问题)

21、分页瓦片加载器子节点的作用((十二)中问题)

22、分页瓦片卸载器子节点的作用((十二)中问题)

23、栅格化器子节点的作用((十二)中问题)

24、地形子节点的作用((十二

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值