添加条目到地图:_Block_Type_Is_Valid(pHead-> nBlockUse)

时间:2015-07-22 17:49:34

标签: c++ visual-c++ stdmap

更新

问题是由使用指针作为地图的关键引起的。因为它似乎并不真正起作用:-D

原帖

我想将调用存储到我的渲染器,然后按排序顺序渲染它们。我认为让地图以着色器作为参数和<的地图是个好主意。 SomeKey,SomeOtherMap>作为价值。最后会有一个属性向量。

我尝试使用以下代码:

/* Typedefs */
typedef std::vector< Properties > PropertiesLayerOpaque;
typedef std::map< GeometryPtr, PropertiesLayerOpaque > GeometryLayerOpaque;
typedef std::map< MaterialPtr, GeometryLayerOpaque > MaterialLayerOpaque;
typedef std::map< ShaderPtr, MaterialLayerOpaque > QueueOpaque;

void RenderQueue::submitToRenderQueue(GeometryPtr geometry, Properties properties, GLfloat distanceToCamera, bool opaque)
{
    if (opaque){
        MaterialLayerOpaque &matLayer = _renderQueueOpaque[geometry->getMaterial()->getShader()];
        GeometryLayerOpaque &geomLayer = matLayer[geometry->getMaterial()];
        PropertiesLayerOpaque &propertiesLayer = geomLayer[geometry];
        propertiesLayer.push_back(properties);
    }
}

着色器,材质和几何图形是shared_ptr,因为我在项目中随处可见它们。属性是按值添加的,因为它们应该是唯一的,并且基本上定义了对渲染器的调用。

现在我的问题:这个代码工作正常,直到我第二次添加相同的模型(具有相同的着色器,材质和几何但不同的属性)。 调用已添加但在函数结束时出现以下错误:

error message

我似乎并没有真正得到这些地图,所以我非常感谢你的帮助......非常感谢你!

0 个答案:

没有答案