我正在尝试从渲染纹理中读取值,因此我使用的是ReadPixels:

var currentActiveRT = RenderTexture.active;
RenderTexture.active = _sim.CurrentTex;

_cashedTex.ReadPixels(new Rect(0, 0, _cashedTex.width, _cashedTex.height), 0, 0);
_cashedTex.Apply();

RenderTexture.active = currentActiveRT;

但它似乎不适用于WebGL . 我在WebGL上读到的任何东西都只是0,而在编辑器中我得到的是实际值 .

我在WebGL开发版中的Firefox控制台中收到以下错误:“错误:WebGL:readPixels:格式/类型对无效” . 编辑器中没有给出错误,这只发生在WebGL构建中 .

rendertexture的格式为 RenderTextureFormat.ARGBFloat_cashedHeightsTex 的格式为 TextureFormat.RGBAFloat (注意A通道的位置不同,但是rendertextures没有RGBAFloat格式:s)

为什么会这样?我该如何解决这个问题?

笔记:

  • 我读取高度值以更新物理模型,因此我可以进行光线投影 .

  • 我也在Unity Forums上问了这个问题

  • 我正在使用Unity 5.4.0f3和Firefox 48.0.2

更新:

我做了一个小测试,看看它是否只是浮点格式的一个问题,它的确如此 .

它在编辑器中的样子:
enter image description here

它在Firefox中的样子:
enter image description here

在这里你可以看到WebGL构建:https://dl.dropboxusercontent.com/u/10448192/ReadPixelTest/WebGL/index.html

你可以在这里下载资源:https://dl.dropboxusercontent.com/u/10448192/ReadPixelTest/ReadPixelTest.zip

更新:我将此作为一个错误提交给Unity,他们说他们能够重现它并将调查它 . 因此,它似乎将在未来的某个版本中得到修复 . 当我知道更多时,我会回报 .