找回密码
 立即注册
首页 业界区 科技 webgpu学习问题,遇到了create graphics pipeline state ...

webgpu学习问题,遇到了create graphics pipeline state failed错误

全叶农 昨天 13:51
 
在学习webgpu并渲染图像时发生create graphics pipeline state failed with E_INVALIDARG (0x80070057)错误,图像无法成功渲染。
html代码:
  1. const pipeline = device.createRenderPipeline({
  2.             // 管线布局配置
  3.             layout: 'auto',
  4.             // 顶点着色器配置
  5.             vertex: {//顶点相关配置
  6.                 module: device.createShaderModule({code: vertex}),
  7.                 entryPoint: "main",
  8.                 buffers: [// 顶点所有的缓冲区模块设置
  9.                     {//其中一个顶点缓冲区设置
  10.                         arrayStride: 3*4,//一个顶点数据占用的字节长度,该缓冲区一个顶点包含xyz三个分量,每个数字是4字节浮点数,3*4字节长度
  11.                         attributes: [{// 顶点缓冲区属性
  12.                             shaderLocation: 0,//GPU显存上顶点缓冲区标记存储位置
  13.                             format: "float32x3",//格式:loat32x3表示一个顶点数据包含3个32位浮点数
  14.                             offset: 0//arrayStride表示每组顶点数据间隔字节数,offset表示读取改组的偏差字节数,没特殊需要一般设置0
  15.                         }]
  16.                     }
  17.                 ]
  18.             },
  19.             // 片元着色器配置
  20.             fragment: {
  21.                 module: device.createShaderModule({code: fragment}),
  22.                 entryPoint: "main",
  23.                 targets: [{
  24.                     format: format
  25.                 }],
  26.             },
  27.             // 绘制图元配置
  28.             primitive: {
  29.                 topology: "triangle-list",//三角形绘制顶点数据
  30.             }
  31.         });
复制代码
wgsl代码:
  1. //顶点着色器代码
  2. const vertex = /*wgsl*/`
  3.     @vertex
  4.     fn main(@location(0) pos: vec3<f32>) -> @builtin(position) vec4<f32>{
  5.         // var pos2 = vec4<f32>(pos,1.0);//pos转齐次坐标
  6.         // pos2.x -= 0.2;//所有的顶点x坐标偏移0.2
  7.         // return pos2;//返回顶点数据,渲染管线下个环节使用
  8.         return vec4<f32>(pos,1.0);
  9.     }
  10. `;
复制代码
  
问题:经过一系列测试发现一个不理解的错误。当管线shaderLocation: 0 ;顶点着色器@location(0)不能正常显示,会出现create graphics pipeline state failed with E_INVALIDARG (0x80070057)错误。但当我将这两个值修改为1,图像正常渲染。令人费解!有懂得大神指教一下
 
 
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册