Vec--OpenGL的顶点基础

Task

Find the sum of three vectors in the program (blueChannel, redChannel, alphaChannel), and print the result using gl_FragColor variable.
求三个向量的和(blueChannelredChannel,alphaChannel),并使用变量gl_FragColor输出结果

Theory

在 GLSL 中,vec 是一种用于定义向量的数据类型。向量用于表示以一维、二维、三维或四维的标量值集合(例如浮点数、整数等)。vec数据类型后面跟着一个数字,用于指定向量的维数。

GLSL 中常见的 vec 类型:

  • vec2:表示二维向量。
  • vec3:表示三维向量。
  • vec4:表示四维向量。

您可以在 GLSL 中使用向量来表示位置、方向、颜色、纹理坐标等。向量值可以像标量值一样应用相同的数学运算符。这些运算符对向量的每个元素执行分量运算。但是,要使这些运算符在向量上起作用,两个向量必须具有相同数量的元素。

在 GLSL 中使用 vec 的示例:

定义 vec 变量:

glsl 复制代码
vec3 position = vec3(1.0, 2.0, 3.0);

访问 vec 变量的组成部分:

glsl 复制代码
float x = position.x; // accesses the x component of the vec3 position
float y = position.y; // accesses the y component of the vec3 position
float z = position.z; // accesses the z component of the vec3 position

对 vec 变量执行操作:

glsl 复制代码
vec2 a = vec2(1.0, 2.0);
vec2 b = vec2(3.0, 4.0);
vec2 sum = a + b; // vector addition
vec2 difference = a - b; // vector subtraction
vec2 scaled = a * 2.0; // scalar multiplication

Answer

glsl 复制代码
void main() {
  vec4 blueChannel = vec4(0.0, 0.0, 0.75, 0.0);
  vec4 redChannel = vec4(0.5, 0.0, 0.0, 0.0);
  vec4 alphaChannel = vec4(0.0, 0.0, 0.0, 1.0);
  
  gl_FragColor = blueChannel + redChannel + alphaChannel;
}

练习

Vec

相关推荐
小满zs18 分钟前
Next.js精通SEO第四章(JSON-LD + web vitals)
前端·seo·next.js
云水一下8 小时前
从零开始!VMware安装Fedora Workstation 44桌面系统完整教程
前端
小码哥_常9 小时前
安卓黑科技:实现多平台商品详情页一键跳转APP
前端
killerbasd9 小时前
还是迷茫 5.3
前端·react.js·前端框架
不会敲代码110 小时前
TCP/IP 与前端性能:从数据包到首次渲染的底层逻辑
前端·tcp/ip
kyriewen10 小时前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·github·openai
AC赳赳老秦10 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
kyriewen10 小时前
代码写成一锅粥?3个设计模式让你的项目“起死回生”
前端·javascript·设计模式
千寻girling11 小时前
《 Git 详细教程 》
前端·后端·面试
之歆12 小时前
DAY08_CSS浮动与行内块布局实战指南(下)
前端·css