8 OpenGL纹理和采样器

2024-02-22 01:36
文章标签 opengl 纹理 采样器

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

纹理和采样器 Textures and Samplers

纹理映射将一个或多个指定图像的部分映射到片元或顶点上。在着色器中,通过在指定的(s、t、r)纹理坐标位置采样图像的颜色来实现这种映射。纹理查找通常用于修改片元的RGBA颜色,但也可以用于着色器中的任何目的。

本章首先描述了如何在章节8.1-8.11中指定和查询像素矩形、纹理图像以及纹理和采样器对象参数。章节8.12-8.26中剩余的部分描述了着色器中如何执行纹理采样。

纹理的内部数据类型可以是有符号或无符号的规范化固定点、有符号或无符号的整数,或浮点数,这取决于纹理的内部格式。内部格式和内部数据类型之间的对应关系见表8.12-8.13。固定点和浮点纹理返回浮点值,整数纹理返回有符号或无符号整数值。片元着色器负责将纹理查找的结果解释为正确的数据类型,否则结果是未定义的。

每种支持的纹理类型都是由一维、二维或三维数组的纹素构成的纹理图像集合(参见章节2.6.6)。一维、二维和三维纹理分别由一维、二维或三维纹理图像组成。一维和二维数组纹理是由一维或二维图像组成的数组。每个图像由一个或多个层组成。二维多重采样和二维多重采样数组纹理是特殊的二维和二维数组纹理,每个纹素中包含多个样本。立方体贴图是特殊的二维数组纹理,其有六个表示立方体面的层。访问立方体贴图时,纹理坐标被投影到立方体的六个面之一上。立方体贴图数组是作为二维数组纹理存储的立方体贴图层集合。访问立方体贴图数组时,纹理坐标s、t和r类似于立方体贴图,而最后一个纹理坐标q被用作立方体贴图片段的索引。矩形纹理是特殊的二维纹理,仅包含单个图像,并使用非规范化坐标进行访问。缓冲区纹理是特殊的一维纹理,其纹理图像存储在单独的缓冲区对象中。

实现必须支持使用多个图像进行纹理处理。

以下各小节(直到第8.14节)指定了单个纹理的GL操作。可以像第11.1.3.5节描述的那样,由着色器对多个纹理图像进行采样和组合。

片元着色器中用于纹理的坐标由OpenGL着色语言规范定义。

命令

void glActiveTexture( enum texture );

指定活动纹理单元选择器。可以通过调用GetIntegerv,并将pname设置为ACTIVE_TEXTURE来查询选择器。

每个纹理图像单元由章节8中定义的所有纹理状态组成。活动纹理单元选择器选择由涉及纹理图像处理的命令访问的纹理图像单元。这些命令包括TexParameter、TexImage、BindTexture以及所有这些状态的查询。

活动纹理图像单元选择器所需的状态是一个整数。初始值为TEXTURE0。

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



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

相关文章

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

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

试用GLFW并创建OpenGL和DX的环境

介绍GLFW GLFW官网:https://www.glfw.org/ GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop. It provides a simple API for creating windows, contex

试用UE4的纹理数组(UTexture2DArray)

UTexture2DArray 我发现在我目前使用的版本(4.25)中,官方已经实现了纹理数组(可能在4.24或更早版本就已经实现了)。 纹理数组,其含义不言而喻。一个重要作用是可以使用更多的纹理而不受制于sampler数目限制。 这一篇里我想对官方的纹理数组进行一下简单的试用。 试用 0. 启用纹理数组 虽然我看到了代码中有UTexture2DArray这个类,不过一开始并没有在编辑器

研究纹理采样器在像素级别的采样位置

问题 【纹理采样器】是一个基础的概念。假设有一个正方形面片,顶点的UV范围是0.0~1.0,那么在这个正方形面片上采样一张纹理时,会呈现出完整的纹理。 但我现在关注的问题是,在像素级别上,采样的位置是怎样的。具体来讲:对于UV值是(0.0,0.0)的点,它对应的采样位置是纹理最左上角像素的中心?还是纹理最左上角像素的左上角?即,下面左右哪个是正确的情况? 在宏观上,尤其是像素较多的时候,二者