Texture2D.GetPixelBilinear

Switch to Manual
public Color GetPixelBilinear (float u, float v);

Description

返回标准化坐标 (u, v) 处已过滤的像素颜色。

坐标 uv 的取值范围为 0.0 到 1.0,与网格中的 UV 坐标类似。 如果坐标超出边界(大于 1.0 或小于 0.0), 则将被限制或者将根据该纹理的包裹模式进行重复。

纹理坐标从左下角开始。UV (0,0) 正好落在左下角的纹理像素上; UV ((width-1)/width, (height-1)/height) 正好 落在右上角的纹理像素上。

返回的像素颜色经过双线性过滤。

该纹理必须在导入设置中设置了 Read/Write Enabled 标志,否则此函数将失败。在使用 Crunch 纹理压缩的纹理上,GetPixelBilinear 不可用。

另请参阅:GetPixel

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public Texture2D sourceTex; public float warpFactor = 1.0F; private Texture2D destTex; private Color[] destPix; void Start() { destTex = new Texture2D(sourceTex.width, sourceTex.height); destPix = new Color[destTex.width * destTex.height]; int y = 0; while (y < destTex.height) { int x = 0; while (x < destTex.width) { float xFrac = x * 1.0F / (destTex.width - 1); float yFrac = y * 1.0F / (destTex.height - 1); float warpXFrac = Mathf.Pow(xFrac, warpFactor); float warpYFrac = Mathf.Pow(yFrac, warpFactor); destPix[y * destTex.width + x] = sourceTex.GetPixelBilinear(warpXFrac, warpYFrac); x++; } y++; } destTex.SetPixels(destPix); destTex.Apply(); GetComponent<Renderer>().material.mainTexture = destTex; } }

另请参阅:GetPixel