using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(MeshRenderer), typeof(MeshFilter))]
public class TextureExample : MonoBehaviour
{
private MeshRenderer m_MeshRenderer;
private MeshFilter m_MeshFilter;
private Mesh m_Mesh;
void Start()
{
m_MeshFilter = GetComponent<MeshFilter>();
m_MeshRenderer = GetComponent<MeshRenderer>();
Color color = Color.red;
m_Mesh = new Mesh();
using (VertexHelper vertex = new VertexHelper())
{
vertex.AddVert(new Vector3(0, 0), color, new Vector2(0, 0));
vertex.AddVert(new Vector3(0, 100), color, new Vector2(0, 1));
vertex.AddVert(new Vector3(100, 100), color, new Vector2(1, 1));
vertex.AddVert(new Vector3(100, 0), color, new Vector2(1, 0));
vertex.AddTriangle(0, 1, 2);
vertex.AddTriangle(2, 3, 0);
vertex.FillMesh(m_Mesh);
}
m_Mesh.name = "Quad";
m_MeshFilter.mesh = m_Mesh;
Material material = new Material(Shader.Find("Transparent/Diffuse"));
Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
// 从屏幕读取像素保存到纹理数据中。
texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
texture.Apply();
material.name = "Quad_Material";
material.mainTexture = texture;
m_MeshRenderer.material = material;
}
}