2012-07-22 83 views
1

從.png或.jpg文件加載實際圖像數據以用於Chromes NaCl內的OpenGL的最佳方式是什麼?在NaCl中加載OpenGL圖像的最佳方式

是否有可以做到這一點的PPAPI功能?我不認爲有。

我正在考慮使用javaScript加載圖像數據並將其傳回NaCl。這可能嗎?如果是的話,你用什麼javaScript方法將圖像數據傳遞給NaCl,因爲我不認爲postMessage是我想要的嗎?

令人沮喪的是,必須將圖像加載到Chrome的後端,但無法通過NaCl訪問它。

+0

注意:我也做了我自己的格式,它佔用了大約一個.png文件。只需將原始的rgba數據壓縮爲zip並將其加載回來是處理不佔用太多紋理的無損圖像的最簡單方法。 – zezba9000 2013-01-21 06:29:14

回答

2

有3種方法。

  1. 您可以使用nacl-mounts庫從服務器加載文件並將其存儲在本地以便在您的應用程序中使用它。
  2. 您也可以看到GetUrl example in nacl sdk從服務器加載文件並直接使用它。
  3. 在pepper_21中還有一個新例子,它載入紋理並將其設置爲立方體。
+0

This new pepper_21 demo ...它需要不停止的異步加載嗎?或者你可以停止主線程來加載圖像數據...這對於我來說是最大的問題,因爲它無法阻止主線程加載數據文件。使跨平臺應用程序變得非常痛苦,但要做到。我已經通過拋出列表中所有需要的文件對象,然後使用普通流從那裏讀取內存(所以它僞造真正的系統IO),找到了一種異步方法。雖然這對於NaCl中缺少的特徵只是一個破解。 – zezba9000 2012-07-23 09:30:33

+0

實際上在任何情況下都沒有直接的方法來停止主線程。由於文件必須從服務器加載,所以實際上無法停止主線程,這會使瀏覽器掛起一段時間。但是你可以使用一個線程和一個isImagesLoaded布爾值來輕鬆地僞裝它。 – codetiger 2012-07-23 15:52:10

0

如果您使用Javascript中的文件,您也可以創建一個blob url,然後使用GetUrl從NaCL加載,如上所述。

+0

ya,當我再次開始在NaCl中做更多的時候,我可能會使用javaScript來加載.png,.jpg文件ects ...現在寫我製作了我自己的圖像格式,名爲.bmpc,基本上是一個帶有alpha的壓縮.bmp文件頻道取代.png。在大多數情況下,其尺寸幾乎與.png相同。我也使用我自己的加載器.dds/dxt文件。 – zezba9000 2012-12-18 23:42:58

相關問題