【学习笔记】3D图形核心基础精炼版-6:stage3D实战-顶点

顶点

  这里说的顶点实际上包括组成物体的所有点、贴图UV坐标信息、该点的法线信息、该点的颜色信息等。

		var vbV:Vector.<Number> = Vector.<Number>([
		      // X  Y Z U V   R   G   B A
			-1, 1,0,0,0,0.1,0.1,0.1,1, // 左上角的点
			 1, 1,0,1,0,0.1,0.1,0.1,1, // 右上角的点
			 1,-1,0,1,1,0.1,0.1,0.1,1, // 右下角的点
			-1,-1,0,0,1,0.1,0.1,0.1,1  // 左下角的点
		]);
                vb = context3D.createVertexBuffer(vbV.length/9,9); // 这里的9表示一个顶点含有的9个Number信息
                vb.uploadFromVector(vbV,0,vbV.length/9); // 上传,不上传以后就无法使用这个vb(VertexBuffer3D)

   上面的环节不用再每次渲染都上传一下,只要vb建立好了,以后每次渲染的时候直接用即可。而这个XYZUVRGBA这个具体用于干什么以及顺序什么也可以自己定,就像你存一个数据到数组中,你取的时候按照你存的顺序来读取使用一个道理,当然操作它的时候就是在shader语言里面进行操作了。可以先稍微渲染时画家context3D的处理:


context3D.clear(); // 清除绘制
context3D.setVertexBufferAt(0,Actor.vb,0,Context3DVertexBufferFormat.FLOAT_3); // xyz 代码中可使用va0
context3D.setVertexBufferAt(2,Actor.vb,5,Context3DVertexBufferFormat.FLOAT_4); // rgba 代码中可使用va2
context3D.setProgram(program1); // 该次绘制使用program1代码来绘制 
context3D.drawTriangles(ib,0); // 绘制,物体的索引ib

  再看看AGAL里program1的代码:

// VERTEX着色语言
"m44 op va0 vc0 \n" + // 输出顶点 = 该物体的原始顶点 * 该物体的最终矩阵
"mov v1 va2\n"+ // 将顶点的颜色信息传输到中转站,方便FRAGMENT着色语言用

// FRAGMENT着色语言
"mov oc v1 \n" + // 输出颜色,每个顶点不是都有颜色么

当然到这里都不是完整的代码,都是片段,我们只是从片段中理解概念,后面才会有具体完整的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值