当前位置: 首页 > news >正文

GLSL texture()

GLSL(OpenGL Shading Language) 中,texture 是指纹理贴图,是图形渲染中常用的一种资源,用来为3D对象提供丰富的表面细节(如颜色、凹凸感等)。GLSL 提供了许多函数来访问和操作纹理数据,通常用于片元着色器(Fragment Shader)中。


一、纹理基本概念

  • 纹理(Texture) 是一个多维的数据集合,通常是一张2D图片,也可以是1D、3D、立方体贴图等。

  • 采样器(Sampler) 是 GLSL 中访问纹理的变量类型,它将纹理与着色器连接起来。


二、GLSL中的常见采样器类型

类型维度描述
sampler1D1D纹理一维纹理
sampler2D2D纹理最常见的纹理类型
sampler3D3D纹理三维纹理,用于体积效果等
samplerCube立方体纹理用于环境贴图等


三、使用纹理的步骤(简要)

  1. 在 CPU 端(OpenGL)中:

    • 创建并绑定纹理对象

    • 加载图像数据

    • 配置纹理参数

    • 将纹理传递到着色器中

  2. 在 GLSL 中:

    • 声明一个 uniform sampler2D 类型的变量来接收纹理

    • 使用 texture() 函数进行采样


四、GLSL 纹理采样函数

vec4 texture(sampler2D sampler, vec2 coord);
  • 参数解释:

    • sampler2D sampler:表示要采样的纹理

    • vec2 coord:纹理坐标,范围通常是 [0.0, 1.0]

  • 返回值:

    • 返回一个 vec4,表示纹理在该坐标下的 RGBA 颜色值


五、示例代码

片元着色器中使用纹理
uniform sampler2D uTexture;  // 来自CPU传入的纹理
in vec2 vTexCoord;           // 从顶点着色器传入的纹理坐标
out vec4 fragColor;void main() {fragColor = texture(uTexture, vTexCoord);
}

六、注意事项

  • 纹理坐标超出 [0,1] 范围时,会根据纹理的**包裹模式(wrapping mode)**重复、镜像或夹取。

  • 纹理采样时可能会发生模糊或失真,可通过**过滤方式(filtering)**控制。

  • texture2D() 是旧版GLSL中的函数,现代GLSL使用 texture()

相关文章:

  • 【深度学习-pytorch篇】3. 优化器实现:momentum,NAG,AdaGrad,RMSProp,Adam
  • 第十章 反射
  • 电动黄油枪行业数据分析报告2025-恒州诚思
  • Python 字典渲染字符串
  • node创建自己的CLI脚手架(强化基础)
  • 苍茫命令行:linux模拟实现,书写微型bash
  • ​​知识图谱:重构认知的智能革命​
  • 【Rust】Rust获取命令行参数以及IO操作
  • ABAQUS三维功能梯度多孔结构材料FGM轴压模拟
  • 第二章 1.6 数据采集安全风险防范之数据源鉴别及记录
  • API 与 SPI
  • ZooKeeper 命令操作
  • 三维点云深度学习代码torch-points3d-SiamKPConvVariants复现记录(持续更新中)
  • Yocto meta-toradex-security layer创建加密数据分区应用说明
  • 高通滤波和低通滤波
  • 针对C语言的开发工具推荐及分析(涵盖编辑器、集成开发环境(IDE)、编译器、调试工具及辅助工具)
  • 电子电路:什么是C类放大器?
  • 【C++基础知识】【ASAN】
  • Kafka KRaft + SSL + SASL/PLAIN 部署文档
  • Python应用while循环猜数字
  • 帮传销组织做网站/中小企业网站制作
  • 深圳华强北手表批发市场在哪里/郑州seo培训
  • 手机建站平台微点手赚/网站推广的作用在哪里
  • 广州正规网站建设企业/软件推广平台有哪些?哪个比较好
  • 太原谁想做网站/广告引流推广平台
  • 免费搭建永久网站步骤/怎么让百度收录网站