OpenGL ES 3. 纹理采样 详述

2024-05-10 19:32
文章标签 es 采样 opengl 详述 纹理

本文主要是介绍OpenGL ES 3. 纹理采样 详述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,接下来将为大家介绍OpenGL ES 3. 纹理采样。

1、纹理采样概念

纹理采样就是根据片元的纹理坐标到纹理图中􏰯取对应位置颜色的过程。但由于被渲染图元中的片元数量与其对应纹理区域中像素的数量并不一定相同,也 就是说图元中的片元与纹理图中的像素并不总是一一对应的。
例如,将较小的纹理图映射到较大的图元或将较大的纹理图映射到较小的图元时这种情况就 会产生。因此,通过纹理坐标在纹理图中并不一定能得到与之完全对应的像素,这时就需要采用一些策略使得纹理采样可以顺序进行下去。通常采用的策略有最近点采样、线性采样两种,下面将一一进行详细介绍。       

2、最近点采样 GL_NEAREST

最近点采样是最简单的一种采样算法,其速度在各种采样算法中也是最快的。

其实际效果如下图所示:

从前面原理的介绍中可以看出,最近点采样很简单,计算量也小。但最近点采样也有一个明显的缺点,那就是若把较小的纹理图映射到较大的图元上时容易产生很明显的锯齿。

GL_NEAREST的设置方式:

GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, //设置 MIN 时为最􏰰点采􏰞样
GLES30.GL_TEXTURE_MIN_FILTER,GLES30.GL_NEAREST);
GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, //设置 MAG 时为最􏰰点采􏰞样
GLES30.GL_TEXTURE_MAG_FILTER,GLES30.GL_NEAREST);

 

3、线性采样 GL_LINEAR

线性采样算法的原理如图所示。

线性采样时的结果颜色并不一定仅来自于纹理图中的一个像素,其在采样时会考虑到片元 对应的纹理坐标点附近的几个像素。

其实际效果如下图所示:

由于采样时对采样范围内的多个像素进行了加权平均,因此,在将较小的纹理图映射到较大的图元上时,不再会有锯齿的现象,而是平滑。

GL_LINEAR的设置方式:

GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, //设置 MIN 时为线性采􏰞样
GLES30.GL_TEXTURE_MIN_FILTER,GLES30. GL_LINEAR);
GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, //设置 MAG 时为线性采􏰞样
GLES30.GL_TEXTURE_MAG_FILTER,GLES30. GL_LINEAR);

 

最后,欢迎大家一起交流学习:微信:liaosy666 ; QQ:2209115372 。

 

 

 

这篇关于OpenGL ES 3. 纹理采样 详述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977348

相关文章

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

OPENGL顶点数组, glDrawArrays,glDrawElements

顶点数组, glDrawArrays,glDrawElements  前两天接触OpenGL ES的时候发现里面没有了熟悉的glBegin(), glEnd(),glVertex3f()函数,取而代之的是glDrawArrays()。有问题问google,终于找到答案:因为OpenGL ES是针对嵌入式设备这些对性能要求比较高的平台,因此把很多影响性能的函数都去掉了,上述的几个函数都被移除了。接

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工

OpenGL雾(fog)

使用fog步骤: 1. enable. glEnable(GL_FOG); // 使用雾气 2. 设置雾气颜色。glFogfv(GL_FOG_COLOR, fogColor); 3. 设置雾气的模式. glFogi(GL_FOG_MODE, GL_EXP); // 还可以选择GL_EXP2或GL_LINEAR 4. 设置雾的密度. glFogf(GL_FOG_DENSITY, 0

opengl纹理操作

我们在前一课中,学习了简单的像素操作,这意味着我们可以使用各种各样的BMP文件来丰富程序的显示效果,于是我们的OpenGL图形程序也不再像以前总是只显示几个多边形那样单调了。——但是这还不够。虽然我们可以将像素数据按照矩形进行缩小和放大,但是还不足以满足我们的要求。例如要将一幅世界地图绘制到一个球体表面,只使用glPixelZoom这样的函数来进行缩放显然是不够的。OpenGL纹理映射功能支持将

OpenGL ES 2.0渲染管线

http://codingnow.cn/opengles/1504.html Opengl es 2.0实现了可编程的图形管线,比起1.x的固定管线要复杂和灵活很多,由两部分规范组成:Opengl es 2.0 API规范和Opengl es着色语言规范。下图是Opengl es 2.0渲染管线,阴影部分是opengl es 2.0的可编程阶段。   1. 顶点着色器(Vert

重复采样魔法:用更多样本击败单次尝试的最强模型

这篇文章探讨了通过增加生成样本的数量来扩展大型语言模型(LLMs)在推理任务中的表现。 研究发现,重复采样可以显著提高模型的覆盖率,特别是在具有自动验证工具的任务中。研究还发现,覆盖率与样本数量之间的关系可以用指数幂律建模,揭示了推理时间的扩展规律。尽管多数投票和奖励模型在样本数量增加时趋于饱和,但在没有自动验证工具的任务中,识别正确样本仍然是一个重要的研究方向。 总体而言,重复采样提供了一种

OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 流体模拟实现2.1.1 网格结构2.1.2 数据结构2.1.3 程序结构1) 更新速度场2) 更新密度值 2.1.4 实现效果 2.2 颜色设置2.2.1 颜色绘制2.2.2 颜色交互2.2.3 实现效果 2.3 障碍设置2.3.1 障碍定义2.3.2 障碍边界条件判定2.3.3 障碍实现2.3.

OpenGL——着色器画一个点

一、 绘制 在窗口中间画一个像素点: #include <GL/glew.h>#include <GLFW/glfw3.h>#include <iostream>using namespace std;#define numVAOs 1GLuint renderingProgram;GLuint vao[numVAOs];GLuintcreateShaderProgram (){c

Elastic Stack--ES集群加密及Kibana的RBAC实战

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 学习B站博主教程笔记:  最新版适合自学的ElasticStack全套视频(Elk零基础入门到精通教程)Linux运维必备—ElasticSearch+Logstash+Kibana精讲_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1VMW3e6Ezk/?sp