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

2023-11-07

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);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识OpenGL (-)纹理过滤(Texture Filtering) 的相关文章

  • 【CocosCreator入门】CocosCreator组件

    Cocos Creator是一款流行的游戏开发引擎 具有丰富的组件和工具 其中TiledMap组件可以帮助开发者快速创建 加载和渲染地图 目录 一 组件介绍 二 组件属性 三 脚本控制 3 1加载地图 3 2渲染地图 四 详细说明 五 关闭
  • 人像美妆效果实现(贴纸)——OpenGL实现

    一 贴纸美妆 人像美妆效果的实现方式有很多种 其中贴纸美妆是最常见也是应用最广泛的一种实现方式 它有实现简单 素材可移植和可复用性高等优点 是目前众多美颜美妆相关的App中应用最多的美妆实现方式 它有点像我们玩的贴在脸上或手臂上的的纹身贴纸
  • 光照 (5) 光照贴图

    物体在不同的部件上都有不同的材质属性 1 1 漫反射 允许我们对物体的漫反射分量 以及间接地对环境光分量 它们几乎总是一样的 和镜面光分量有着更精确的控制 漫反射贴图 Diffuse Map 使用一张覆盖物体的图像 让我们能够逐片段索引其独
  • 【Games101 作业6 + 附加题】渲染兔子 BVH SAH 代码

    基础题部分 根据教程PDF 首先需要引用如下函数 在作业5的基础上稍作修改 renderer in Renderer cpp 解说见注释 The main render function This where we iterate over
  • GAMES101回顾 -- 光线追踪

    Ray Tracing 光线追踪 实现步骤 发射光线 Ray Generation 光线追踪算法从观察者的视点 如相机位置 发射一条主光线 这条光线的起点是相机位置 方向是从相机位置经过像素位置的射线 光线求交 Ray Object Int
  • Untiy shader 初学 淡入淡出效果

    Properties MainTex Texture 2D white Range Range Range 0 1 0 FadeRange FadeRange Range 3 100 3 SubShader Tags RenderType
  • GAMES101回顾 -- Shading

    Shading 定义 将材质作用于对象的流程 Z Buffer 帧缓存 Frame Buffer Frame Buffer是一个用于存储图像像素数据的内存区域 它通常由一个二维数组表示 每个元素对应屏幕上的一个像素 Frame Buffer
  • 如何有效使用渲染农场?防止渲染出错的7个方法!

    如何使用渲染农场 又如何有效地使用渲染农场 使用云渲染农场时出错怎么办 众所周知我们可以在任意的笔记本或者终端PC上面来创作 3ds Max 场景 但是实际渲染是这样吗 其实不然 这其中的差距不是一星半点 只能说很可能会有两种不同的呈现 而
  • 灯光 (1)平行光(Directional Light)

    1 平行光 Directional Light 定义一个光线方向向量而不是位置向量来模拟一个定向光 着色器的计算基本保持不变 但这次我们将直接使用光的direction向量而不是通过position来计算lightDir向量 struct
  • GAMES101回顾 -- Geometry

    Geometry Examples of geometry 隐式几何 Inplict 定义 用函数进行表示 如 f x y z 0 显式几何 Explict 定义 所有点都是直接或通过参数映射给出 所有的 u v 映射到对应的 x y z
  • 新手LearnOpenGL纹理不显示的部分解决方法

    项目场景 在LearnOpenGL学习中遇到的一些问题 照着写但是纹理加载不出来或者两张纹理只加载一张 问题描述 lt 纹理加载不出来 gt 1 文件路径是否正确 是否输出texture load fail等提示 设置了成功检查才会有提示
  • Vulkan-程序结构

    程序结构 一般来说 完整的Vulkan程序包含 创建Vulkan实例 获取物理设备列表创建逻辑设备 创建命令缓冲 获取设备中支持图形工作的队列 初始化交换链 创建深度缓冲 创建渲染通道 创建帧缓冲 创建绘制对象 初始化渲染管线 创建栅栏和初
  • mesa调试技巧

    技术关键字 mesa log系统 环境变量 目录 前言 一 gdb或vscode的断点调试 二 mesa log 系统的使用 总结 前言 软件调试技术是要求软件开发人员必备的一项技能 不同的问题具有不同的调试手段和方法 本文从mesa库的实
  • 水墨Shader解析

    Chinese Ink wash Painting II Shader 简介 本文尝试对Chinese Ink wash Painting II 来源 https www shadertoy com view DdSyDW 的代码部分进行解
  • 3ds max文件打包?max插件CG Magic一键打包整起!

    3ds max文件如何打包 这个问题 小编听到不少网友的提问 今天CG Magic小编来和大家聊聊 文件更高效的操作 如何打包处理呢 3DMAX这款软件的受众群体是比较高的 在工作方便的同时 共享打包也是比较方便的 3DMAX创建的文件打包
  • GAMES101 Lec 07~09:Shading 定义、着色模型、着色频率、图形渲染管线、纹理

    3dMax 导出一个模型文件包含内容 顶点坐标 法线 边的关系 model 模型 空间中有了一个摄像机 Model 通过变换可以让摄像机放在原点 View 三维空间的模型变换到屏幕上 Projection 通过采样进行光栅化 Rasteri
  • Qt中使用OpenGL渲染视频

    Qt5 4之后 OpenGL在Qt中可以通过QOpenGLWidget和QOpenGLFunctions来实现 以下Demo 只展示OpenGL相关部分 解码出AVFrame后对其进行渲染 顶点Shader static const cha
  • 游戏笔记本电脑可以进行 3D 建模和渲染吗?有哪些优势与缺点?

    3D 建模和渲染是创建令人惊叹的数字艺术 动画和游戏体验的最流行和最广泛使用的工具之一 随着技术的进步 对运行这些模型的强大计算机的需求呈指数级增长 对于那些寻求强大机器来处理 3D 建模任务的人来说 游戏笔记本电脑已成为一个可行的选择 游
  • 3D图形渲染技术

    如何用2D平面展现3D图形 2D图形 在一个平面中有了两个点 知道了他们的XY坐标 就可以把它们链接起来画成一条线 通过控制A和B点的XY坐标可以控制一条线 在3D图像中 点的坐标多了一个Z轴的坐标系 但是在2D的屏幕坐标上不可能有XYZ立
  • Vulkan 绘制显示设计

    背景 众所周知 Vulkan是个跨平台的图形渲染API 为了友好地支持跨平台 Vulkan自然也抽象出了很多接口层去对接各个操作系统 抹平系统间的差异 Swap Chains即为WSI 其本质上是一种图像队列 此队列会按顺序依次将队列中的若

随机推荐

  • 【HBZ分享】Clickhouse高性能剖析--稀疏索引

    简介 密集索引 与 稀疏索引的介绍 1 密集索引 在密集索引中 数据库中每个键值都有一个索引记录 可以加快搜索速度 但需要更多空间来存储这些索引本身 索引记录包含键值 和 指向磁头上实际记录的指针 2 稀疏索引 稀疏索引不会为每个关键字创建
  • 购物小程序怎么做,一篇文章get!

    购物小程序是近年来越来越受欢迎的一种电商模式 它以便捷 快速 个性化的购物体验赢得了广大用户的青睐 如果你也想高效开发一款购物小程序 那么下面就来简单介绍一下步骤 步骤一 确定目标用户和产品特点 首先 我们需要明确目标用户和产品特点 要知道
  • 2023华为OD机试真题【乱序整数序列两数之和绝对值最小/二分法】【2023.Q2】

    题目内容 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大返回 以及绝对值 每种输入只会对应一个答案 但是 数组中同一个元
  • 【面试题】如何理解 前端设计模式-测策略模式?

    前端面试题库 面试必备 推荐 地址 前端面试题库 国庆头像 国庆爱国 程序员头像 总有一款适合你 什么是策略模式 策略 Strategy 模式的定义 该模式定义了一系列算法 并将每个算法封装起来 使他们可以相互替换 且算法的变化不会影响使用
  • APP移动应用测试策略与工具思维导图

    2张图构建移动应用测试知识体系 1 APP移动测试策略 2 移动测试常用工具 目前觉得好用的 因还有其它事 故这里不再啰嗦 想要听我啰嗦的 改天书里见
  • 如何将sqlserver迁移到mysql_如何将数据库从SQL Server迁移到MySQL

    一 迁移Database Schema 首先使用Sybase Powerdesigner的逆向工程功能 逆向出SQL Server数据库的物理模型 具体操作是在Powerdesigner中选择 File Reverse Engine 再选择
  • python进行数据处理:pandas的drop函数

    删除表中的某一行或者某一列更明智的方法是使用drop 它不改变原有的df中的数据 而是返回另一个dataframe来存放删除后的数据 引用自 公众号 写bug的程旭源 个人博客 写bug的程旭源 清理无效数据 df df isnull 返回
  • 机器学习/推荐系统顶会截稿日期

    目录 1 推荐相关会议日程简表 2 推荐相关期刊简表 3 相关会议期刊的注意信息 1 推荐相关会议日程简表 会议 截稿时间 WSDM 2020 08 16 AAAI 2020 09 29 ICLR 2020 10 02 SIGKDD 202
  • PHP序列化与反序列化

    一 对象和类 对象是一个由信息及对信息进行处理的描述所组成的整体 是对现实世界的抽象 类是一个共享相同结构和行为的对象的集合 每个类的定义都以关键字class开头 后面跟着类的名字 PHP对属性的控制通过添加关键字来实现 public 公有
  • SpringBoot与SpringCloud的版本对应详细版

    https blog csdn net qq32933432 article details 89375630 版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https b
  • 物理组件 Physics u3d学习总结笔记本

    目录 1 Rigidbody 2 Hinge Joint 铰链关节 3 Fixed Joint 固定关节 4 Spring Joint 弹簧关节 5 Character Joint角色关节 6 ConfigurableJoint 自定义关节
  • 休息一下,聊聊前阵看的动漫《心理测量者》

    休息一下 聊聊前阵看的动漫 心理测量者
  • python装饰器这一篇就够了

    前言 什么是装饰器 实现原理 实现效果 适用场景 装饰器 装饰器的写法 装饰器的拓展 装饰器的模板 什么是装饰器呢 就是在特定条件下为某些函数再不改动函数体的时候为函数新添加一些功能 这就是装饰器 实现原理 基于 语法和函数闭包 将原函数封
  • 在java中将inputStream对象转换为File对象(不生成本地文件)

    需求说明 在后端中通过POI生成Excel文件流 将输出流 outputStream 转为输入流 inputStream 后又需要将输入流 inputStream 转为File对象 问题 如果需要将输入流 inputStream 转为Fil
  • Node.js入门笔记(二)——npm脚本、跨平台、nrm等入门工具

    Node js入门笔记 二 1 解决一个关于node的配置问题 2 npm 脚本的深层使用 3 获取npm里面的参数 4 node 跨平台工具 cross env 5 执行npm脚本并传入参数 6 nrm镜像源管理工具的使用 7 npx工具
  • C++类大小的计算

    以下内容是参考大神博客 https blog csdn net fengxinlinux article details 72836199 关于类 对象大小的计算 首先 类大小的计算遵循结构体的对齐原则 类的大小与普通数据成员有关 与成员函
  • Guns 技术文档 v5.1 PDF文字版 使用手册

    Guns 技术文档 v5 1 PDF文字版 使用手册 Guns 技术文档 v5 1 pdf 访问密码 168168 stylefeng guns v5 1 final zip 访问密码 168168 资源来源与网络 如侵犯您的权益请联系删除
  • Quick Sort ( simple verson )

    备份一下手打快排的写法 只能算是备份吧 没有解释快排的思想 以 int 为例 没有考虑什么特殊情况 比如传入不合法指针等 模仿一波 C 的 sort 的接口 只传排序区间的首尾指针 void quick sort int left int
  • cp210x驱动运行不了怎么解决_「推荐」如何解决数位板驱动不运行

    推荐 如何解决数位板驱动不运行 板绘的盆友们是不是经常遇到数位板没有压感 每次重新开机以后就会显示数位板驱动程序未运行不能用 把数位板的程序重新卸载安装 重新开机又不能用 这是怎么回事呢 解决方法来了 这是一个驱动的bug 以下分享两个方法
  • 初识OpenGL (-)纹理过滤(Texture Filtering)

    1 OpenGL需要知道怎样将纹理像素 Texture Pixel 也叫Texel 映射到纹理坐标 纹理坐标 不依赖于分辨率 Resolution 它可以是任意浮点值 给模型顶点设置的那个数组 OpenGL以这个顶点的纹理坐标数据去查找纹理