GL.Viewport

Switch to Manual
public static void Viewport (Rect pixelRect);

Description

设置渲染视口。

所有渲染均被约束在传入的 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(); } }