2016-11-29 88 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鍵值。

相關問題