为数组中的元素生成“可读”唯一标识符?

时间:2016-11-29 21:22:43

标签: c++ enums game-engine

我正在尝试制作一个OpenGL游戏引擎,并将这样的场景初衷:(简化)

逐行读取scene.txt文件:

  • 第一部分:着色器的名称。我加载它们

  • 第二部分:必须创建的材料的名称。

    • 将附加到素材的着色器的名称。

因此,正如您所看到的,我通过字符串识别“元素”(如着色器和材质),这不是那么有效。 (但我认为在初始化期间这是可以接受的)

问题在于,如果我想在运行时更改对象的材质或材质的着色器,我必须通过相应的数组并比较其元素的名称(字符串)< / strong>直到找到相应的那个。

我认为这有点慢,所以我想知道,如何在运行时中创建唯一且易于比较的标识符?

有没有“动态枚举处理”之类的方式?

  • 换句话说:我怎样才能找出一些我不知道编译时间的东西?

  • (使用 int 作为标识符并不是真正的“说话”名称)

  • 这只是我想到的:

    • 为所有可能的着色器创建枚举。
    • 我创建了一个 bools数组,其中包含每个可能着色器的1个元素。
    • 在初始化时,如果已加载,我将此数组中的着色器的bool设置为true。

这可能是一个非常糟糕的主意,所以请随意评论:)

1 个答案:

答案 0 :(得分:0)

最后,我选择了std::unordered_map std::string个键值。