首页 > 解决方案 > 如何使用高度和宽度调整 Texture2D 的大小?

问题描述

我试图调整纹理的大小和宽度以及它的显示索引超出宽度/高度

纹理需要调整大小,因为我在其他纹理上使用它以应用于特定坐标,所以我无法调整纹理图形的大小是我的 texture2D

graphics.Resize((horizo​​ntalx - Horizo​​ntaly), (verticalx - verticaly), TextureFormat.RGBA32, false);//创建具有高度和宽度的纹理

SetPixels32 只能在 RGBA32 或 BGRA32 纹理上调用,但在 TextureFormat(12) UnityEngine.Texture2D:SetPixels32(Color32[]) 上调用

标签: c#opencvunity3dimage-resizingtexture2d

解决方案


调整大小的最简单方法可能是调用 Graphics.Blit 以新的 RenderTexture 为目标并使用您的 Texture2D 作为源。如果之后需要它成为 Texture2D,可以在 RenderTexture 上调用 ReadPixels

using UnityEngine;
using UnityEngine.UI;

public class Resizer : MonoBehaviour {
    public Texture2D inputtexture2D;
    public RawImage rawImage;
    [ExposeMethodInEditor]
    void Start()
    {
        rawImage.texture=Resize(inputtexture2D,200,100);
    }
    Texture2D Resize(Texture2D texture2D,int targetX,int targetY)
    {
        RenderTexture rt=new RenderTexture(targetX, targetY,24);
        RenderTexture.active = rt;
        Graphics.Blit(texture2D,rt);
        Texture2D result=new Texture2D(targetX,targetY);
        result.ReadPixels(new Rect(0,0,targetX,targetY),0,0);
        result.Apply();
        return result;
    }
}

推荐阅读