我正在使用此代码从所有相机的渲染纹理创建一个 Texture2D。
代码:
var w = 256;
var h = 256;
var cameras:Camera[] = Camera.allCameras;
var renderTexture:RenderTexture = RenderTexture.GetTemporary(Screen.width, Screen.height, 24);
RenderTexture.active = renderTexture;
for (var camera:Camera in cameras)
{
if (camera.enabled)
{
var fov:float = camera.fov;
camera.targetTexture = renderTexture;
camera.Render();
camera.targetTexture = null;
camera.fov = fov;
}
}
var result:Texture2D = new Texture2D(w, h, TextureFormat.ARGB32, false);
result.ReadPixels(Rect(0.0f, 0.0f, Screen.width, Screen.height), 0, 0, false);
result.Apply();
Application.ExternalCall("exportImage",System.Convert.ToBase64String(result.EncodeToPNG()));
它在 webplayer 上运行正常,但是当尝试将此 texture2d 转换为 base64 并发送到浏览器(通过 externalcall())时,结果是灰色的半透明图像。
任何帮助将不胜感激!谢谢。