最新消息:

Unity 绘制四边形

在平面内,由不在同一条直线的四条线段首尾顺序相接组成的图形就是四边形。要确定平面中的一个四边形,需要知道 4 个点,然后将这 4 个点连接起来即可。在 GL 中绘制四边形,需要使用 GL.Begin(GL.QUADS) 方法,该方法中的参数表示需要绘制的图形为四边形。绘制四边形时,需要设置 4 个合法的点,也就是说这 4 个点肯定能构成一个四边形。如果设置的 4 个点在一条直线上,或者只设置了其中 3 个点,或者两个点重叠,无法让这 4 个点构成一个四边形,程序就无法绘制该图形,这里需要读者注意一下。本例共绘制了三组几何图形——两个正四边形和一个无规则四边形,具体代码如下所示。

using UnityEngine;
using System.Collections;

public class CSharp : MonoBehaviour {
 public Material mat0;
 public Material mat1;
 public Material mat3;

 void OnPostRender() {
 //绘制正四边形
 DrawRect(100,100,100,100,mat0);
 DrawRect(250,100,100,100,mat1);
 //绘制无规则四边形
 DrawQuads(15,5,10,115,95,110,90,10,mat3);
 }

 /*
 绘制正四边形
 float x :x轴起始坐标
 float y :y轴起始坐标
 float width :正四边形的宽
 float height :正四边形的高
 */
 void DrawRect(float x,float y,float width,float height,Material mat) {
 GL.PushMatrix();
 mat.SetPass(0);
 GL.LoadOrtho();
 //绘制类型为四边形
 GL.Begin(GL.QUADS);
 GL.Vertex3(x/Screen.width, y/Screen.height, 0);
 GL.Vertex3(x/Screen.width, (y + height)/Screen.height, 0);
 GL.Vertex3((x+ width)/Screen.width, (y + height)/Screen.height, 0);
 GL.Vertex3((x+ width)/Screen.width,y/Screen.height, 0);
 GL.End();
 GL.PopMatrix();
 }

 /*
 绘制无规则的四边形
 float x1 :起始点1的横坐标
 float y1 :起始点1的纵坐标
 float x2 :起始点2的横坐标
 float y2 :起始点2的纵坐标
 float x3 :起始点3的横坐标
 float y3 :起始点3的纵坐标
 float x4 :起始点4的横坐标
 float y4 :起始点4的纵坐标
 */
 void DrawQuads(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,Material mat) {
 GL.PushMatrix();
 mat.SetPass(0);
 GL.LoadOrtho();
 //绘制类型为四边形
 GL.Begin(GL.QUADS);
 GL.Vertex3(x1/Screen.width, y1/Screen.height, 0);
 GL.Vertex3(x2/Screen.width, y2/Screen.height, 0);
 GL.Vertex3(x3/Screen.width, y3/Screen.height, 0);
 GL.Vertex3(x4/Screen.width, y4/Screen.height, 0);
 GL.End();
 GL.PopMatrix();
 }
}

为了说明正四边形和无规则四边形之间的区别,本例将它们封装成两个不同的方法,其中 DrawRect() 方法用于绘制正四边形,而 DrawQuads() 方法用于绘制无规则四边形。在上述代码的最后,我们使用 GL.End() 方法将绘制的四边形显示在屏幕中。

好了,Unity 绘制四边形 就分享到这里,非常感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » Unity 绘制四边形

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者