如果相机不移动,我想在画布中绘制相机视图并在画布中显示纹理。我运行它为Android然后我得到黑色texuture,但对于WebPlayer是好!
public RawImage rawImage;
private void Start()
{
texture = new RenderTexture(camera.pixelWidth, camera.pixelHeight, 32, RenderTextureFormat.ARGB32);
texture.antiAliasing = 8;
texture.Create();
}
public void ShowTexture()
{
camera.targetTexture = texture;
RenderTexture.active = texture2;
if (!RenderTexture.active.IsCreated())
RenderTexture.active.Create();
camera.Render();
var texture2d = new Texture2D(camera.targetTexture.width, camera.targetTexture.height, TextureFormat.RGB24, true, true);
texture2d.ReadPixels(new Rect(0, 0, camera.pixelWidth, camera.pixelHeight), 0, 0);
texture2d.Apply(false);
RenderTexture.active = null;
camera.targetTexture = null;
rawImage.texture = texture2d;
}
答案 0 :(得分:1)
这可能对某人有帮助......
偶然复制同样的问题......在iOS和Droid上都有效。 然后禁用相机清除,嘿presto ...在iOS上工作但在Android上黑色。 将相机清除回Z深度...... iOS和Droid都再次工作。
因此,请尝试更改相机清除设置。
答案 1 :(得分:0)
这是Unity的一个已知问题。您可以在以下网址找到更多详细信息:
https://forum.unity3d.com/threads/rendertexture-not-working-on-ios-and-android-unity-4-2-0f4.192561/
https://forum.unity3d.com/threads/render-texture-not-working-on-device-unity-5-2-1f1.358483/
以及其他一些主持人和工作人员声称在将来的版本中修复它或者(带有一些不必要的傲慢),问题是用户和一个根本就不存在的bug。
<强> BUT 强>
这听起来很傻,但是将ImageEffect添加到主摄像头。我已经制作了一个附加到我的主摄像头的虚拟效果,没有任何合理的解释,它在移动设备上修复了RenderTexture。
DummyEffect.cs:
using UnityEngine;
[ExecuteInEditMode]
[AddComponentMenu("Image Effects/Dummy Effect")]
public class DummyEffect : ImageEffectBase {
// Called by camera to apply image effect
void OnRenderImage (RenderTexture source, RenderTexture destination) {
Graphics.Blit (source, destination, material);
}
}
DummyEffect.shader:
Shader "Hidden/Dummy Effect" {
Properties {
_MainTex ("Base (RGB)", RECT) = "white" {}
}
SubShader {
Pass {
ZTest Always Cull Off ZWrite Off
Fog { Mode off }
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
float4 frag (v2f_img i) : COLOR {
return tex2D(_MainTex, i.uv);
}
ENDCG
}
}
Fallback off
}
答案 2 :(得分:0)
我目前正在使用unity ver 2019.2.0f1。 出于未知原因,我从较早版本导入的初始相机显示黑色渲染纹理,而新相机运行良好。 我似乎已经找到了解决方案,相机本身似乎有问题。删除相机,在渲染纹理rgba8_unorm上重新创建颜色格式,并在深度缓冲区设置为24 现在两者都可以正确显示在android上。 希望这会有所帮助