2016-11-29 87 views
0

我与做一个OpenGL游戏引擎试验,并initalize的情景是这样的:(简体)为数组中的元素生成'可读'唯一标识符?

逐行读取关于scene.txt文件行:

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

  • 第二部分:要创建的材质的名称。

    • 着色将被附连到材料的名称。

所以你看我目前用绳子这是不那么有效识别“元素”(如着色器和材料)。 (但我认为这是在初始化过程中可以接受的)

的问题是,如果我想改变对象的材料或运行过程中的材料的着色器,我不得不通过相应的阵列和比较其元素的名称(字符串)直到我找到相应的一个。

我认为这有点慢,所以我想知道,我如何在运行时期间使一个独特的,容易比较的标识符

有没有办法“动态枚举处理”或类似的东西?

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

  • (使用INT作为标识符是不是一个真正的 “会说话” 的名字)

  • 这只是来到我的脑海:

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

它可能是非常糟糕的主意,可以随意评论:)

+1

您可以尝试使用标准容器之一,例如'std :: unordered_map'来将字符串与对象相关联。 –

+0

只需使用int就可以了。为什么不?我真的不明白这个布尔数组,如果你想通过名字找到某些东西,它就不会改变任何东西,它只会告诉它是否被加载。 –

+0

unordered_map是一个好看的东西。 :) @SamiKuhmonen我想改变标识基础,因为字符串很慢。帖子末尾的想法是我想替换字符串标识的想法。 – Tudvari

回答

0

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

相关问题