首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锈菌wgpu上的均匀缓冲问题仅适用于网络目标

锈菌wgpu上的均匀缓冲问题仅适用于网络目标
EN

Stack Overflow用户
提问于 2022-09-15 17:20:29
回答 1查看 100关注 0票数 1

我把这个项目作为学习生锈和图形编程的一种方法。该程序基于这个伟大的教程,目前作为本机桌面应用程序工作(至少在Windows上)。

然而,我的主要目标是创建一个web应用程序来展示我的项目。我很难做到这一点,因为我遇到了一个错误,我不知道如何修复(浏览器控制台上的GL_INVALID_OPERATION: It is undefined behaviour to use a uniform buffer that is too small.)。从外观上看,它可能是底层库wgpu的一个bug,但是,由于我没有图形编程经验,所以我无法确定这不是我自己的愚蠢错误。

这一错误清楚地说明了问题与统一缓冲区有关。但是,这个缓冲区有正确的填充,当程序不针对web (普通cargo build --release)时,它看起来是正确实现的。

我在wgpu图书馆的GitHub上打开了一个类似的GitHub,我收到了一些有用的回复,但没能解决我的问题。我找到了一些相关问题,但它对我没有多大用处。

我在.wgsl文件中的统一缓冲区:

代码语言:javascript
复制
struct Uniform {
   domain: mat2x2<f32>, 
   mouse: vec2<f32>,
   c: vec2<f32>,        
   time: f32,          
   mandelbrot: i32,   
   padding: vec2<f32>,
}
@group(0) @binding(0) 
var<uniform> my_uniform: Uniform;

生锈的均匀缓冲器:

代码语言:javascript
复制
#[repr(C)]
#[derive(Copy, Clone, Debug, bytemuck::Zeroable, bytemuck::Pod)]
pub struct Uniform {
    pub domain: [[f32; 2]; 2],
    pub mouse: [f32; 2],
    pub c: [f32; 2],
    pub time: f32,
    pub mandelbrot: i32,
    pub _padding: [f32; 2],
}

有关更多详细信息,请查看存储库,所提供的链接是固定到当前提交的,在此链接可以复制。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-15 18:22:48

https://github.com/gfx-rs/wgpu/discussions/3027#discussioncomment-3656241解决了这一问题。它似乎是wgpu上的一个bug。

使用vec4<f32>而不是mat2x2<f32>解决了问题。它可能会在未来得到纠正,因为我的实现也应该是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73735162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档