首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能在GLSL中访问mat3中的备用浮点数吗?

我能在GLSL中访问mat3中的备用浮点数吗?
EN

Stack Overflow用户
提问于 2022-09-11 06:16:42
回答 1查看 75关注 0票数 1

我在GLSL着色器中使用mat3制服。

代码语言:javascript
运行
复制
layout (std140)
struct UNI {
    mat3 mat;
} u;

在GLSL中,mat3存储为3行vec4,这意味着其中有3个未使用的浮点数。

有什么办法可以进入这些浮标吗?我想把更多的数据放进去。

注:我试着使用u.mat[0][3],但编译它时它写的是“数组索引超出界限”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-11 12:39:53

我认为你在这里混合了两件事:

  1. 数据
  2. 的实际内存布局GLSL为您提供访问数据

的API

当您使用统一缓冲区对象(UBO)备份mat3的存储并使用std140布局时,是的,mat3的布局与3 vec4值的方式完全相同。因此,从本质上说,在std140布局下,mat3x4 (4行/元素各有三列)和mat3mat3x3之间的内存布局没有区别。

但是,当使用mat3作为GLSL着色器中的API类型时,不能访问每列的第四行。

您可以做的只是使用mat3x4类型,这将允许您访问第四行。当您需要一个mat3时,您可以使用mat3(theMat3x4Value)进行转换。

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

https://stackoverflow.com/questions/73677225

复制
相关文章

相似问题

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