我正在查看three.js代碼,並注意它在繪圖時對所有對象進行了交互操作。然後這反過來更新每個對象的GL上下文。但是如果我有一堆對象共享一個資料,這是非常低效的,因爲它可能與其他對象交錯。如何排序/優化對象的列表以避免gl調用
如何將我的對象放在最小化gl調用的次序?我知道哪些對象共享屬性,我只是不知道如何告訴three.js這些信息。
更新:我修改了three.js代碼並計算更新。這是非常浪費的。給定一個具有兩種材質的邏輯對象,對於我添加到場景中的每一個都需要兩次交換程序。所以對於100個這樣的對象,它將交換200次,而不是所需的2次交換!
問題是我該如何去分組對象?我很確定地知道類似材料的物體可以一起呈現。不幸的是,這些都不是靜態的,因此不能組合,並且必須位於不同的場景對象內(因爲它們有自己的變換)。 –
這是一個常見問題。我盡我所能來幫助你,我可以回答你的three.js問題,但我不可能告訴你如何分組你的對象。 – WestLangley
我知道我想如何組合他們,我只是不確定如何告訴three.js。也就是說,我看不到影響渲染器中對象順序的能力.__ webglObjects。我寫了一個自定義分類器,它做了正確的分組,但它顯然不是標準的。 –