在平面内,由不在同一条直线的四条线段首尾顺序相接组成的图形就是四边形。要确定平面中的一个四边形,需要知道 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 绘制四边形
如果文章对你有帮助,欢迎点击上方按钮打赏作者
支付宝打赏
微信打赏