Context3D类的setVertexBufferAt方法(指定与单个着色器程序输入相对应的顶点数据组件)

本文详细介绍了如何使用setVertexBufferAt方法在顶点着色器中配置顶点数据,包括参数说明、数据偏移量指定及可能引发的错误。通过实例展示了如何将顶点数据从VertexBuffer3D缓冲区映射到着色器属性寄存器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public function setVertexBufferAt(index:int, buffer:VertexBuffer3D, bufferOffset:int = 0, format:String = "float4"):void

使用 setVertexBufferAt 方法来标识 VertexBuffer3D 缓冲区中每个顶点定义的哪些数据组件属于顶点程序的哪些输入。顶点程序的开发人员会确定每个顶点需要的数据量。该数据从 1 个或多个 VertexBuffer3D 流映射到顶点着色器程序的属性寄存器中。


顶点着色器所使用数据的最小单位为 32 位数据。距顶点流的偏移量以 32 位的倍数指定。

举例来说,编程人员可以使用以下数据定义每个顶点:
position:  x    float32
           y    float32
           z    float32
color:     r    unsigned byte
           g    unsigned byte
           b    unsigned byte
           a    unsigned byte
假定在 VertexBuffer3D 对象中定义了名为 buffer 的对象,则可使用以下代码将其分配给顶点着色器:
setVertexBufferAt( 0, buffer, 0, Context3DVertexBufferFormat.FLOAT_3 );   // attribute #0 will contain the position information

setVertexBufferAt( 1, buffer, 3, Context3DVertexBufferFormat.BYTES_4 );    // attribute #1 will contain the color information


参数
index:int — 顶点着色器中的属性寄存器的索引(0 到 7)。
 
buffer:VertexBuffer3D — 包含要馈送到顶点着色器中的源顶点数据的缓冲区。
 
bufferOffset:int (default = 0) — 单个顶点的起始数据偏移量,从此处开始读取此属性。在上例中,位置数据的偏移量为 0,因为它是第一个属性;颜色的偏移量为 3,因为颜色属性跟在 3 个 32 位位置值之后。以 32 位为单位指定偏移量。
 
format:String (default = "float4") — 来自 Context3DVertexBufferFormat 类的值,指定此属性的数据类型。


引发
Error — 无效的枚举:当格式不是 Context3DVertexBufferFormat 类中定义的值之一时。
 
RangeError — 属性寄存器超出边界:当 index 参数超出 0 到 7 的范围时。(着色器最多可使用 8 个顶点属性寄存器。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值