设置渲染视口。
所有渲染均被约束在传入的 pixelRect
内。
如果修改了视口,则在其内部渲染的所有内容都会被拉伸。
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public Material mat;
private bool stretch = false;
void Update() {
if (Input.GetKeyDown(KeyCode.Space))
if (stretch)
stretch = false;
else
stretch = true;
}
void OnPostRender() {
if (!mat) {
Debug.LogError("Please Assign a material on the inspector");
return;
}
GL.PushMatrix();
mat.SetPass(0);
GL.LoadPixelMatrix();
if (stretch)
GL.Viewport(new Rect(0, 0, Screen.width, Screen.height));
else
GL.Viewport(new Rect(0, 0, Screen.width / 2, Screen.height));
GL.Color(Color.red);
GL.Begin(GL.QUADS);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, Screen.height, 0);
GL.Vertex3(Screen.width, Screen.height, 0);
GL.Vertex3(Screen.width, 0, 0);
GL.Color(Color.yellow);
GL.End();
GL.Begin(GL.TRIANGLES);
GL.Vertex3(Screen.width / 2, Screen.height / 4, 1);
GL.Vertex3(Screen.width / 4, Screen.height / 2, 1);
GL.Vertex3(Screen.width - Screen.width / 4, Screen.height / 2, 1);
GL.End();
GL.PopMatrix();
}
}