返回介绍

GL.TRIANGLE_STRIP 三角形带

发布于 2019-12-18 15:37:44 字数 3115 浏览 1125 评论 0 收藏 0

JavaScript => public static var TRIANGLE_STRIP: int;
C# => public static int TRIANGLE_STRIP;

Description 描述

Mode for Begin: draw triangle strip.

从Begin模式开始后,然后绘制三角形带。(前三个点组成一个简单三角形,第四个点和前面两个点组成三角形,依次类推)。

If you want to draw something 2D in screen space then probably you will want to use GL.LoadOrtho or GL.LoadPixelMatrix.
If you want something in “3D”, then probably you should consider using GL.LoadIdentity followed by GL.MultMatrix with the actual 3D transform you want your stuff to be in.

如果在场景中画2D对象,你可能要用到GL.LoadOrtho 或 GL.LoadPixelMatrix函数。
如果在场景中画3D对象,你可能要用到GL.LoadIdentity 或 GL.MultMatrix函数进行3D变换。

See Also: GL.Begin, GL.End.

JavaScript:

	// Draws 2 triangles in the left side of the screen
	// that look like a square
 
	var mat : Material;
 
	function OnPostRender() {
		if (!mat) {
			Debug.LogError("Please Assign a material on the inspector");
			return;
		}
		GL.PushMatrix();
		mat.SetPass(0);
		GL.LoadOrtho();
		GL.Begin(GL.TRIANGLE_STRIP);
		GL.Color(Color(0,0,0,1));
		GL.Vertex3(0.25,0.5,0);
		GL.Vertex3(0,0.5,0);
		GL.Vertex3(0.25,0.25,0);
		GL.Vertex3(0,0.25,0);
		GL.End();
		GL.PopMatrix();
	}

C#:

using UnityEngine;
using System.Collections;
 
public class Sample : MonoBehaviour {
 
	// Draws 2 triangles in the left side of the screen
	// that look like a square
 
	Material mat  ;	
	void OnPostRender() {
		if (!mat) {
			Debug.LogError("Please Assign a material on the inspector");
			return;
		}
		GL.PushMatrix();
		mat.SetPass(0);
		GL.LoadOrtho();
		GL.Begin(GL.TRIANGLE_STRIP);
		GL.Color(new Color(0,0,0,1));
		GL.Vertex3(0.25f,0.5f,0);
		GL.Vertex3(0,0.5f,0);
		GL.Vertex3(0.25f,0.25f,0);
		GL.Vertex3(0,0.25f,0);
		GL.End();
		GL.PopMatrix();
	}
}

注解:

GL_TRIANGLE_STRIP绘制三角形方式很多时候令人疑惑,在这里对其运作机理进行解释。

一般情况下有三种绘制一系列三角形的方式,分别是GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN。

GL_TRIANGLES是以每三个顶点绘制一个三角形。第一个三角形使用顶点v0,v1,v2,第二个使用v3,v4,v5,以此类推。如果顶点的个数n不是3的倍数,那么最后的1个或者2个顶点会被忽略。

GL_TRIANGLE_STRIP则稍微有点复杂。

其规律是:

构建当前三角形的顶点的连接顺序依赖于要和前面已经出现过的2个顶点组成三角形的当前顶点的序号的奇偶性(如果从0开始):

如果当前顶点是奇数:

组成三角形的顶点排列顺序:T = [n-1 n-2 n].

如果当前顶点是偶数:

组成三角形的顶点排列顺序:T = [n-2 n-21 n].

以上图为例,第一个三角形,顶点v2序号是2,是偶数,则顶点排列顺序是v0,v1,v2。第二个三角形,顶点v3序号是3,是奇数,则顶点排列顺序是v2,v1,v3,第三个三角形,顶点v4序号是4,是偶数,则顶点排列顺序是v2,v3,v4,以此类推。

这个顺序是为了保证所有的三角形都是按照相同的方向绘制的,使这个三角形串能够正确形成表面的一部分。对于某些操作,维持方向是很重要的,比如剔除。

注意:顶点个数n至少要大于3,否则不能绘制任何三角形。

GL

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文