2014-06-11 71 views
2

現在,我使用這裏描述similiar方法加載資產Lua的加載屏幕 - courotines對C線

http://www.lua.org/pil/9.4.html

  • 讀取文件1
  • 渲染
  • 讀取文件2
  • 提交
  • ...

臨:使用普通盧阿,簡單。

Contra:它不是併發的,每個文件讀取塊渲染,然後才轉到下一個。 此外,如果您需要處理數據(例如,從源創建着色器程序,或解碼圖片並創建紋理),則需要將其傳遞給C並將其取回。

在過去我使用C線程調用lua函數,然後他們完成加載文件。

親:它是併發的。您可以進程中加載​​數據的C++側

魂鬥羅:你需要通過加載數據返回到Lua

也許我在這兩個非常錯誤的,也有與的Lua + C加載和處理數據的更好方法?

+2

正在加載文件併發速度足夠快是值得的麻煩? –

回答

2

我會去這裏有混合方法,使用線程的兩種類型:

  • 處理線程從消息隊列中讀取並執行資源的實際負荷。
  • 加載程序線程運行Lua通過排隊請求異步處理文件。

通過添加更多特定類型的線程,它可以很好地擴展。

當然,你應該通過剖析當前的實現來確保它真的值得一提。使用線程和消息隊列添加更多的C/C++代碼。畢竟它只是一個加載屏幕;)

+0

我想補充說,在C和Lua之間交換數據是_fast_。 – MBlanc