2012-07-22 73 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

相关问题