更新
问题是由使用指针作为地图的关键引起的。因为它似乎并不真正起作用:-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,因为我在项目中随处可见它们。属性是按值添加的,因为它们应该是唯一的,并且基本上定义了对渲染器的调用。
现在我的问题:这个代码工作正常,直到我第二次添加相同的模型(具有相同的着色器,材质和几何但不同的属性)。 调用已添加但在函数结束时出现以下错误:
我似乎并没有真正得到这些地图,所以我非常感谢你的帮助......非常感谢你!