返回标准化坐标 (u, v) 处已过滤的像素颜色。
坐标 u
和 v
的取值范围为 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。