Swizzling--OpenGL的向量的灵活组合

Task

Using swizzle reorder pixel's color components from rgba to bgra.
用 swizzle 重新排序像素的颜色组件从 rgba 到 bgra。

Theory

在 GLSL 中,Swizzling 指的是选择和重新排列向量的组件以创建新向量的技术。它允许您以简洁和灵活的方式访问和操作向量的各个组件。Swizzling 是通过使用组件名 x、 y、 z、 w 的组合来实现的,分别引用第一个、第二个、第三个和第四个组件。还可以使用 r,g,b 和 swizzle 掩码来代替 x,y,z,w 来访问向量的分量。Rgba 掩码通常用于处理颜色或纹理数据,因为它对应于通常与颜色信息相关联的红、绿、蓝和 alpha 组件。

示例

ini 复制代码
vec4 position = vec3(1.0, 0.5, 0.2);
float x = position.x; // accesses the x component
float y = position.y; // accesses the y component
float z = position.z; // accesses the z component

vec4 color = vec4(1.0, 0.5, 0.2, 1.0);
// creates a vec3 with the red, green, and blue components
vec3 rgb = color.rgb;
// reorders the components using rgba swizzle
vec4 rgba = color.bgra;
vec3 baseColor = vec3(0.5, 0.3, 0.8);
float alpha = 0.7;
// creates a new color with specified RGB components and alpha
vec4 finalColor = vec4(baseColor.rgb, alpha);

Answer

glsl 复制代码
varying vec4 color;

void main() {
  gl_FragColor = color.bgra;
}

练习

Swizzling

相关推荐
陈随易5 小时前
Rolldown 把插件改动回传提速 26 倍
前端·后端·程序员
笃行35013 小时前
集中式与分布式,KingbaseES 的四种形态共用一套内核
前端
陈随易14 小时前
Vue 编译器换掉 source map,快了三四成
前端·后端·程序员
ZhengEnCi15 小时前
12 种高级 UI 交互效果及对应 AI 提示词:从按压回弹到底部抽屉的物理感教学
前端·css·交互设计
IT_陈寒18 小时前
Redis大key删除为什么会导致服务卡顿?我的线上事故复盘
前端·人工智能·后端
用户27050777252419 小时前
MCP 最小 Server 实测:3 个 JSON-RPC 报错与修法
前端
用户4993350250719 小时前
一人VIP账号多人共用:Web 代理里的会话共享怎么实现
前端
用户老李19 小时前
无线电自学教程 05:第一台收音机——从矿石机到 SDR
前端
IPIPD19 小时前
Node.js请求遇到503怎么重试?先解析Retry-After,再做有上限退避
前端
葡萄城技术团队19 小时前
dsh-spreadjs-editor 的集成链路:把 SpreadJS Designer 嵌进 Agent 工作台
前端