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

初识OpenGL (-)纹理过滤(Texture Filtering)

1. OpenGL需要知道怎样将纹理像素(Texture Pixel,也叫Texel)映射到纹理坐标。

  • 纹理坐标
    不依赖于分辨率(Resolution),它可以是任意浮点值,
    给模型顶点设置的那个数组,OpenGL以这个顶点的纹理坐标数据去查找纹理图像上的像素,然后进行采样提取纹理像素的颜色。

  • 纹理像素
    Texture Pixel也叫Texel,一张.jpg格式图片由无数像素点组成

1.1 邻近过滤GL_NEAREST (Nearest Neighbor Filtering)

OpenGL默认的纹理过滤方式。当设置为GL_NEAREST的时候,OpenGL会选择中心点最接近纹理坐标的那个像素。
下图中你可以看到四个像素,加号代表纹理坐标。左上角那个纹理像素的中心距离纹理坐标最近,会被选择为样本颜色:

在这里插入图片描述

1.2 线性过滤GL_LINEAR((Bi)linear Filtering)

会基于纹理坐标附近的纹理像素,计算出一个插值,近似出这些纹理像素之间的颜色。一个纹理像素的中心距离纹理坐标越近,那么这个纹理像素的颜色对最终的样本颜色的贡献越大。返回的颜色是邻近像素的混合色:
在这里插入图片描述

那么这两种纹理过滤方式有怎样的视觉效果呢?让我们看看在一个很大的物体上应用一张低分辨率的纹理会发生什么吧(纹理被放大了,每个纹理像素都能看到):
在这里插入图片描述

GL_NEAREST产生了颗粒状的图案,我们能够清晰看到组成纹理的像素,而GL_LINEAR能够产生更平滑的图案,很难看出单个的纹理像素。GL_LINEAR可以产生更真实的输出,但有些开发者更喜欢8-bit风格,所以他们会用GL_NEAREST选项。

当进行放大(Magnify)和缩小(Minify)操作的时候可以设置纹理过滤的选项,比如你可以在纹理被缩小的时候使用邻近过滤,被放大时使用线性过滤。

glTexParameter*函数为放大和缩小指定过滤方式
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

相关文章:

  • ATF官方文档翻译(二):Authentication Framework Chain of Trust(身份验证框架和信任链)(3)
  • wsl安装gpu版mindspore(二)
  • 输出总结是成长的开始
  • [RK3568 Android11] Binder通信整体框架
  • 【uiautomation】获取微信好友名单,可指定标签 全部
  • VAPS XT开发入门教程07:表元素(TableElements)介绍
  • 一文带你了解电感的5大损耗
  • C语言for循环必备练习题
  • Optimization of DQN
  • 猿创征文|微软出品效率神器PowerToys,太实用了
  • Arduino框架下ESP32/8266使用PROGMEM功能将数据存储到flash中的使用规范
  • 并查集(路径压缩)
  • 防火墙实验二——实现域间、域内双向NAT、双机热备实验
  • 【Django】REST_Framework框架——视图集ViewSet和ModelViewSet源码解析
  • 如何对SAP数据库表进行增删改查操作(3)
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Android交互
  • Angular6错误 Service: No provider for Renderer2
  • Docker容器管理
  • jdbc就是这么简单
  • magento 货币换算
  • nodejs调试方法
  • SOFAMosn配置模型
  • SQLServer之创建数据库快照
  • Wamp集成环境 添加PHP的新版本
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 使用common-codec进行md5加密
  • 正则与JS中的正则
  • 大数据全解:定义、价值及挑战
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #《AI中文版》V3 第 1 章 概述
  • #DBA杂记1
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #数学建模# 线性规划问题的Matlab求解
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (13)Hive调优——动态分区导致的小文件问题
  • (2)(2.10) LTM telemetry
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (论文阅读40-45)图像描述1
  • (一)Linux+Windows下安装ffmpeg
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • ***原理与防范
  • .Net - 类的介绍
  • .NET Core WebAPI中封装Swagger配置
  • .NET delegate 委托 、 Event 事件
  • .NET 回调、接口回调、 委托
  • .net 简单实现MD5
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET设计模式(8):适配器模式(Adapter Pattern)