当前位置: 首页 > wzjs >正文

建设好网站如何上传百度软文营销经典案例

建设好网站如何上传百度,软文营销经典案例,游戏加速器,网站建设时如何调用qq微信本文将通过完整代码示例和逐行注释,详细解释WebGPU中顶点缓冲区的配置方法,特别针对shaderLocation参数与着色器的对应关系进行重点说明。 一、顶点数据定义与缓冲区创建 // 定义顶点数据结构(逻辑层) // 包含位置(position)、颜…

        本文将通过完整代码示例和逐行注释,详细解释WebGPU中顶点缓冲区的配置方法,特别针对shaderLocation参数与着色器的对应关系进行重点说明。


一、顶点数据定义与缓冲区创建

// 定义顶点数据结构(逻辑层)
// 包含位置(position)、颜色(color)、UV坐标(uv)三个属性 
const vertexData = new Float32Array([// 位置(x,y,z)  颜色(r,g,b,a)       UV(u,v)-0.5, -0.5, 0,   1, 0, 0, 1,     0, 0,0.5, -0.5, 0,    0, 1, 0, 1,     1, 0,0, 0.5, 0,       0, 0, 1, 1,     0.5, 1 
]);// 创建GPU顶点缓冲区 
const vertexBuffer = device.createBuffer({ size: vertexData.byteLength,   // 数据总字节数(36字节/顶点 * 3顶点 = 108字节)usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,mappedAtCreation: true 
});
new Float32Array(vertexBuffer.getMappedRange()).set(vertexData); 
vertexBuffer.unmap(); 

二、顶点缓冲区布局配置(核心注释版)

const vertexBuffersLayout = [{arrayStride: 36, // 每个顶点数据占36字节(计算方式见下方)attributes: [// --- 位置属性 --- {shaderLocation: 0,  // 对应着色器中的 @location(0)offset: 0,          // 从顶点数据起始位置开始 format: "float32x3" // 3个32位浮点数(占12字节)},// --- 颜色属性 --- {shaderLocation: 1,  // 对应着色器中的 @location(1)offset: 12,         // 位置属性占12字节(3*4),因此颜色从第12字节开始 format: "float32x4" // RGBA四通道(占16字节)},// --- UV属性 --- {shaderLocation: 2,  // 对应着色器中的 @location(2)offset: 28,         // 位置+颜色共28字节(12+16),UV从第28字节开始 format: "float32x2" // 2个32位浮点数(占8字节)}]
}];

关键计算说明

  • arrayStride = 3(position)*4 + 4(color)*4 + 2(UV)*4 = 36字节
  • 每个属性的offset为前序属性总字节数

三、顶点着色器与管线配置

// 顶点着色器(对应上方shaderLocation)
@vertex 
fn vs_main(@location(0) position: vec3<f32>,  // 对应shaderLocation:0 @location(1) color: vec4<f32>,     // 对应shaderLocation:1 @location(2) uv: vec2<f32>         // 对应shaderLocation:2 
) -> @builtin(position) vec4<f32> {return vec4<f32>(position, 1.0); 
}

渲染管线绑定

const pipeline = device.createRenderPipeline({ vertex: {module: shaderModule,entryPoint: "vs_main",buffers: vertexBuffersLayout // 传入顶点布局配置 },// ...其他管线配置(片段着色器、primitive拓扑等)
});

四、高级技巧与优化建议

1. 动态插槽切换

// 在渲染循环中切换不同缓冲区 
passEncoder.setVertexBuffer(0,  positionBuffer); // 绑定位置数据到插槽0 
passEncoder.setVertexBuffer(1,  uvBuffer);       // 绑定UV数据到插槽1 

适用场景:当位置和UV数据需要分别更新时

2. 数据压缩优化

// 使用packed格式减少内存占用 
{shaderLocation: 1,format: "unorm8x4", // 将颜色压缩为4个8位无符号整数 offset: 12 
}

可节省50%颜色数据内存(16字节 → 4字节)


五、完整工作流程示意图

[顶点数据] → [缓冲区创建]  ↓  
[布局声明] → [管线配置]  ↓  
[渲染通道] → [插槽绑定] → [绘制调用]

六、调试建议

  1. 验证数据偏移:通过GPURenderPipeline.getBindGroupLayout 检查属性偏移是否匹配
  2. 使用调试工具:Chrome开发者工具的WebGPU Inspector可实时查看缓冲区内容
  3. 最小化测试:先单独测试每个属性通道,确认数据正确性

完整项目代码可参考WebGPU官方示例


        通过以上注释与配置说明,开发者可以清晰理解顶点数据从JavaScript到着色器的传递逻辑。实际开发中需特别注意shaderLocation@location的数值对应关系,这是数据能否正确传递的关键。

http://www.dtcms.com/wzjs/102904.html

相关文章:

  • 经营类网站备案百度首页广告
  • 求个网站没封的2021广州推动优化防控措施落地
  • b2c网站建设平台百度知道问答首页
  • 广州专业网站优化公司河北搜索引擎优化
  • 郑州做网站公司有哪些长沙关键词优化服务
  • 兼职做平面模特网站销售怎么做
  • 杭州做网站博客百度快照如何优化
  • 网站开发技术的发展流程怎么做公司网站推广
  • 绍兴建设网站世界足球排名前100
  • 如何做网站水晶头seo是什么意思啊
  • ecshop手机网站模板扬州seo博客
  • 做网站需准备些什么软件seoshanghai net
  • 手机网站模板 html百度经验登录入口
  • 重庆的网站建设公司网站seo推广多少钱
  • 公司招聘网站 哪个部门做微信平台推广方法
  • wordpress qq客服插件seo专业课程
  • pc网站运营输入关键词搜索
  • 网站建设优化服务太原seo网络优化招聘网
  • 网站建设百度百科上海高端seo公司
  • ppt模板免费下载网站 知乎济南优化哪家好
  • 如何学建设网站南宁网络推广服务商
  • 嘉兴做网站建设的公司哪家好安徽网络推广
  • 江西省工程建设信息官方网站站长网站
  • 心理健康网站建设论文磁力屋torrentkitty
  • 上海平台网站建设公司排名纯注册app拉新挣钱
  • 成都网站seo外包免费推广的网站平台
  • 专门做音效的网站学电商哪个培训学校好
  • 从零开始自己做外贸网站和海外网络营销现在做网络推广都有什么方式
  • 宝安附近公司做网站建设多少钱2023年新冠疫情最新消息
  • 怎样制作时时彩网站做 裙 o武汉seo系统