初识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) 的相关文章

  • 如何减少项目在Corona和V-Ray中的3ds Max渲染时间?

    相信在大多 3D 项目里 渲染是最耗费时间的部分 它不仅是建模和纹理化 3D 场景的过程 而是需要利用硬件来完成任务 我们在配备独立GPU和带有2到4个强大内核的CPU的中档计算机上 可以将3ds Max中创建和处理的项目轻松渲染完成 因为
  • 相机 (2)旋转

    1 1 LookAt矩阵 用这3个轴外加一个平移向量来创建一个矩阵 并且你可以用这个矩阵乘以任何向量来将其变换到那个坐标空间 R是右向量 U是上向量 D是方向向量 P是摄像机位置向量 glm LookAt函数需要一个位置 目标和上向量以得到
  • 广西高等教育学会高校教育技术委员会莅临瑞云科技考察交流

    2023年3月18日上午11点整 广西高等教育学会高校教育技术专业委员会组织了一批来自广西各院校的专家老师 来到深圳市瑞云科技股份有限公司 以下简称瑞云科技 参观考察 瑞云科技是一家专注为视觉行业提供垂直云计算服务的公司 用户超20万 遍及
  • 虚拟数字人定制公司 国内做虚拟数字人定制开发的公司有吗?

    得益于图形渲染技术 AI技术 传感器硬件等技术的发展 使得虚拟数字人逐步进入大众视野 虚拟数字人分为真人驱动 AI驱动 AI合成 不同形式的虚拟数字人制作难度与成本相差较大 许多大众认为 制作虚拟数字人就是做一个美术就可以了 如果这样的话
  • unity(界面操作)如何打开模型网格

    就一个简单的操作 想不到网上的文章写的这么不清楚 找了半天才找到 误人子弟 我干脆自己写一个 如何在unity看到下面这个模型网格 如图点击
  • Vulkan入门精要

    Vulkan入门精要 fuxiii github io https fuxiii github io Essentials of Vulkan
  • 初识OpenGL (-)VAO&VBO

    如何填充VBO 配置顶点属性指针以及如何把它们都储存到一个VAO里 step1 把颜色数据加进顶点数据中 eg 把颜色数据添加为3个float值至vertices数组 把三角形的三个角分别指定为红色 绿色和蓝色 float vertices
  • Turbo跨平台开源渲染引擎

    Turbo跨平台开源渲染引擎 基于Vulkan开发的跨平台渲染引擎 欢迎来参观 使用 提意见 o o Turbo开源引擎地址 Turbo开源引擎开发记录视频
  • 光照 (5) 法线矩阵(Normal Matrix)

    定义 模型矩阵左上角3x3部分的逆矩阵的转置矩阵 注意 大部分的资源都会将法线矩阵定义为应用到模型 观察矩阵 Model view Matrix 上的操作 但是由于我们只在世界空间中进行操作 不是在观察空间 我们只使用模型矩阵 1 1 法向
  • 内推几何建模与图形渲染职位

    最近 可能也会是长期的 公司在大力招兵买马 急缺几何 图形方面的人才 初级 高级 专家或有致力于图形领域方面开发都欢迎 当然其他方面的也有 包括BIM相关的开发 可直接内推 具体职位列表如下 薪资open可谈 坐标 上海 深圳 武汉三地均可
  • BRDF详解(包括:irradiance,radiance,intensity,立体角)

    BRDF BRDF是双向反射分布函数 Bidirectional Reflectance Distribution Function BRDF 用来定义给定入射方向上的辐射照度 irradiance 如何影响给定出射方向上的辐射率 radi
  • 3DMax 不断崩溃,常见的5种处理方案!

    Autodesk 3DS Max 是一种流行的 3D 建模和动画软件 被图形设计和游戏行业的许多专业人士使用 但是 与任何其他软件一样 用户会遇到崩溃问题 本文列出了 5种常见的解决方案 用于排除故障并解决 3DS Max 崩溃问题 Aut
  • Vulkan-程序结构

    程序结构 一般来说 完整的Vulkan程序包含 创建Vulkan实例 获取物理设备列表创建逻辑设备 创建命令缓冲 获取设备中支持图形工作的队列 初始化交换链 创建深度缓冲 创建渲染通道 创建帧缓冲 创建绘制对象 初始化渲染管线 创建栅栏和初
  • GAMES101: 现代计算机图形学入门(2)几何、光线追踪

    GAMES101 现代计算机图形学入门 链接 GAMES101 1 几何 1 1 几何的表示 隐式几何 通过一个函数表达式来表示的几何体 即 f x y z 0 优点 很容易判断一个点在不在几何体上 缺点 很难通过表达式看出几何体的形状 显
  • Shader学习笔记:BRDF简单概述

    这篇文章写于一年多以前的一次课程作业 这次作为一个 存货 给放出来 仅仅只是针对代码和一些要点进行简单叙述 如果想听完整的版本 请搜索毛星云大神的博客或者书籍 关于基本的物理渲染公式 网络上的博客和典籍已经多如牛毛了 这里只是自己在之前整理
  • 如何渲染精美3D PCB图

    简介 现在网上大部分PCB渲染方法都比较麻烦 并且会有丝印不清晰 或者走线与铜皮不显现问题 现在分享一种简单有效的PCB渲染方法 图为渲染效果图 工具或材料 AD keyshot 一个带3D封装图的PCB文件 具体步骤 1 AD端操作 在P
  • 图形学基础1

    坐标系相关 uv可能会影响局部坐标系 如果light图和brdf图做卷积的时候 局部坐标系保持一致很重要 如下图 tangent是从外部模型文件进行加载的 切线空间采样并转世界坐标系 spherical to cartesian in ta
  • The Cherno——OpenGL

    The Cherno OpenGL 1 欢迎来到OpenGL OpenGL是一种跨平台的图形接口 API 就是一大堆我们能够调用的函数去做一些与图像相关的事情 特殊的是 OpenGL允许我们访问GPU Graphics Processing
  • Unity震撼首发,最新一代高清数字人短片《Enemies》

    我们屡获殊荣的 Demo 团队又一次在 异教徒 The Heretic 累积了超 400 万观众 的基础上取得了进展 推出了 Enemies 一支全新的电影式预告片 以 4K 分辨率的实时渲染来展示眼睛 头发和皮肤渲染等方面的重大突破 创建
  • OSG中几何体的绘制(二)

    5 几何体操作 在本章的前言中就讲到 场景都是由基本的绘图基元构成的 基本的绘图基元构成简单的几何体 简单的几何体构成复杂的几何体 复杂的几何体最终构造成复杂的场景 当多个几何体组合时 可能存在多种降低场景渲染效率的原因 在很多3D引擎中

随机推荐

  • 【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以这个顶点的纹理坐标数据去查找纹理