正在为数组中的元素生成 'readable' 唯一标识符?

Generating 'readable' unique identifier to element in array?

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

逐行读取 scene.txt 文件:

因此,正如您目前所见,我通过字符串 识别'elements'(如着色器和materials),这不是那么有效。 (不过我觉得在初始化的时候是可以接受的)

问题是,如果我想在运行时更改对象的 material 或 material 的着色器,我必须通过相应的数组并 compare 它的元素名称 (string) 直到我找到对应的。

我觉得这有点慢,所以我想知道,如何在运行时创建一个唯一的、易于比较的标识符

有没有办法"dynamic enum handling"之类的?

  • 换句话说:我如何识别我不知道编译时间的东西?

  • (使用 int 作为标识符并不是真正的 "talking" 名称)

  • 我想到了这个:

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

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

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