自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(103)
  • 收藏
  • 关注

原创 8.26 OpenGL纹理和采样器:纹理图像加载和存储

通过将纹理绑定到一组图像单元之一,可以使纹理的内容可供着色器读取和写入。GL实现提供了从零开始编号的图像单元数组,图像单元的总数由实现相关的的值确定。与纹理图像单元不同,图像单元没有每个纹理目标的单独绑定点;每个图像单元一次只能绑定一个纹理。将纹理绑定到图像单元以供图像加载和存储使用其中,unit标识图像单元,texture是纹理的名称,level选择纹理的单个级别。如果texture为零,则会解除当前绑定到图像单元unit上的任何纹理。如果由texture。

2024-02-29 10:02:00 741

原创 8.25 OpenGL纹理和采样器:共享指数纹理颜色转换

则红色、绿色、蓝色和共享位被转换为颜色分量(在过滤之前)使用共享指数解码。红色、绿色、蓝色和指数值(参见第8.5.2节)组件被视为无符号整数,并按以下方式转换为浮点红色、绿色和蓝色。如果当前绑定的纹理的内部格式是。

2024-02-29 10:01:17 440

原创 8.24 OpenGL纹理和采样器:sRGB纹理颜色转换

中的sRGB格式之一,则红色、绿色和蓝色分量将作为过滤的一部分从sRGB颜色空间转换为线性颜色空间,具体描述见8.14和8.15节。任何alpha分量保持不变。理想情况下,实现应在过滤之前对每个样本执行此颜色转换,但是允许在过滤后执行此转换(尽管这种后过滤的方法不如在过滤之前从sRGB转换)。是在范围[0, 1]内的sRGB分量。如果当前绑定的纹理的内部格式是。

2024-02-29 10:00:36 360

原创 8.23 OpenGL纹理和采样器:纹理比较模式

纹理值也可以根据指定的比较函数进行计算。纹理参数指定了比较的操作数,参数指定了比较函数。

2024-02-29 10:00:00 356

原创 8.22 OpenGL纹理和采样器:纹理状态和代理状态

每个数组都有一个宽度、高度(仅适用于二维和三维、矩形、一维数组、立方体贴图和立方体贴图数组)、深度(仅适用于三维、二维数组和立方体贴图数组)、描述图像内部格式的整数,描述图像的红色、绿色、蓝色、alpha、深度和模板分量分辨率的整数值,描述每个分量类型(无符号规范化、整数、浮点数等)的整数值,一个布尔值,描述图像是否被压缩,压缩图像的整数大小,以及包含绑定为图像数据存储器的缓冲对象名称的整数。每个初始纹理图像都是空的。其次,有五组纹理属性,对应于一维、二维、三维、立方体贴图和立方体贴图数组纹理目标。

2024-02-29 09:57:46 392

原创 8.21 OpenGL纹理和采样器:清理纹理图像数据

具有深度组件、模板索引、深度/模板组件数据的基础内部格式的纹理需要相应的深度组件、模板或深度/模板组件数据。指定了纹理图像的下左后纹素坐标,用于确定要清除的矩形子区域的位置和大小。命令中定义的级别),转换方式如第 8.4.4 节所述,然后用于填充目标纹理级别的指定范围。,则指针将被忽略,并且纹理图像的子范围将填充为零。数据的一个包含一到四个组件的数组的指针,将作为常量填充值的源。等于纹理图像的尺寸(对于纹理没有的维度,尺寸为零和一)。是缓冲区纹理,或者纹理图像具有压缩的内部格式,则出错。

2024-02-29 09:57:16 356

原创 8.20 OpenGL纹理和采样器:无效纹理图像数据

指示要失效的纹理图像。在执行此命令后,该子区域的数据值变为未定义。使纹理图像的全部或部分失效,从而让那些纹理像素点成为未定义的状态。则等于纹理图像的尺寸(或对于纹理不存在的维度,等于零和一)。指定了一个矩形子区域的左下后纹素坐标,该矩形区域的宽度为。该子区域必须位于纹理图像的边界内。的值被解释为指定相应层中的立方体贴图面,如。例如,要使二维纹理的一部分失效,请使用。维度上被视为包含六个片的数组,其中。,其解释方式与第8.6节中的。对于没有特定维度的纹理类型,将这些维度视为大小为。使纹理图像的全部失效。

2024-02-29 09:56:37 279

原创 8.19 OpenGL纹理和采样器:不可变格式纹理图像

提供了一组用于一次性指定纹理所有级别属性的替代命令。一旦使用此类命令设置了纹理,除非它是代理纹理(否则将无法使用代理),否则所有层级的格式和尺寸将变为不可变。但是,图像内容和参数仍可修改。这样的纹理称为不可变格式纹理。通过调用并传入pname,可以确定纹理的不可变性状态。以下每条命令都通过伪代码描述了对纹理尺寸和格式的影响。TRUElevelsheightdepth61命令用于指定与每个命令的目标参数绑定的纹理对象的属性。命令的行为类似于相应的命令,但指定的是由每个命令的texture。

2024-02-28 14:19:23 359

原创 8.18 OpenGL纹理和采样器:纹理视图

可以创建一个引用另一个纹理的数据存储并以不同的格式解释数据的纹理,并且/或者选择另一个纹理的子集的级别和/或层。这样的纹理的数据存储与原始纹理的数据存储共享。使用原始纹理更新共享数据存储会影响使用新纹理读取的纹理值,反之亦然。纹理数据存储保持存在状态,直到删除所有引用它的纹理为止。参数控制哪些切片和级别被视为纹理的一部分。,则它们会被截断为原始纹理的最大范围。这些约束在错误部分中总结如下。指定的内部格式进行解释。纹理的数据存储从名为。的纹理继承,但数据存储的元素根据。和纹理尺寸的许多约束取决于目标和。

2024-02-28 14:18:44 424

原创 8.17 OpenGL纹理和采样器:纹理完整性

一个纹理被称作是完整的,是指构成该纹理所需的所有纹理图像及其相关参数(如适用)已一致地定义好。对纹理执行的不同操作需要不同级别的完整性,其定义取决于纹理的维度和类型。立方体贴图数组被认为是“立方体贴图数组完整”(cube array complete)的,条件是数组内的每一层都是立方体完整的。对于k<levelmax或k>q的图像层级k,并不影响mipmap完整性的定义。

2024-02-28 09:56:26 840

原创 8.16 OpenGL纹理和采样器:组合深度_模板纹理

设置了这种模式后,将忽略深度分量,纹理值仅包括模板索引分量。模板索引值被视为无符号整数纹理,并在采样时返回无符号整数值。仅支持最近邻过滤来采样模板索引。对于非深度/模板纹理,将忽略。,则默认情况下会忽略模板索引纹理分量。纹理值τ不包括模板索引分量,而仅包括深度分量。为了访问模板索引纹理分量,应将。如果纹理图像的基本内部格式为。

2024-02-28 09:55:42 359

原创 8.15 OpenGL纹理和采样器:纹理放大

中指定的纹理坐标包裹模式。的值决定了如何获取纹理值。的行为与8.14节中对。

2024-02-28 09:55:08 346

原创 8.14 OpenGL纹理和采样器:纹理缩小

将纹理应用到图元意味着从纹理图像空间到帧缓冲图像空间的映射。一般来说,这种映射涉及对采样的纹理图像进行重构,然后通过映射到帧缓冲区空间所隐含的齐次变形,接着进行滤波,最后在应用到片段之前对经过滤波、变形、重构的图像进行重新采样。在OpenGL中,这种映射由两种简单的过滤方案之一来近似。其中一种方案是根据从纹理空间到帧缓冲空间的映射是否被认为放大或缩小纹理图像而选择的。当纹理的值等于 1.0 时,OpenGL 使用本节和第 8.15 节中描述的各向同性纹理过滤方法。然而,当纹理的。

2024-02-28 09:54:28 320

原创 8.13 OpenGL纹理和采样器:立方体贴图纹理选择

当对立方体贴图纹理进行采样时,s、t、r 纹理坐标被视为从立方体中心发出的方向向量 rx、ry、rz。q 坐标被忽略。在纹理应用时,插值的每个片段方向向量根据最大幅度坐标方向(主轴方向)选择立方体贴图面的二维图像之一。如果两个或更多坐标具有相同的幅度,则实现可以定义规则以消除这种情况的歧义。该规则必须是确定性的,并且仅依赖于 rx、ry、rz。表8.19中的目标列解释了主轴方向如何映射到特定立方体贴图目标的二维图像。

2024-02-28 09:53:41 545

原创 8.12 OpenGL纹理和采样器:深度组件纹理

深度纹理以及深度/模板纹理的深度部分在纹理过滤和应用过程中可以被视为 RED 纹理(参见第 8.23 节)。对于深度纹理和深度/模板纹理,其初始状态将它们视为 RED 纹理。

2024-02-28 09:52:53 314

原创 8.11 OpenGL纹理和采样器:纹理查询

大多数纹理状态变量的查询受到值的限制,以确定查询哪个服务器纹理状态向量。表23.12 表明在状态查询期间由限定的那些状态变量。

2024-02-27 10:26:56 1055

原创 8.10 OpenGL纹理和采样器:纹理参数

纹理参数用于控制 当指定或更改纹理对象的纹理图像,以及将其应用于片段 时的行为。立方体贴图纹理的纹理参数适用于整个立方体贴图;六个独立的二维纹理图像使用的是立方体贴图本身的纹理参数。是一个符号常量,表示要设置的参数;可能的常量及其对应的参数在。参数是相对于视图而非原始数据存储区进行解释的。是要设置单值参数的一个值;是一个参数数组,其类型取决于被设置的参数。在命令的标量形式中,命令,纹理对象是指绑定到。在第8章剩余部分中,用。

2024-02-27 10:26:20 868

原创 8.9 OpenGL纹理和采样器:缓冲纹理

编号为 n 的纹理单元的第 m 个元素来自所附加缓冲对象数据存储区中的 n × components + m 位置处的元素。相反,缓冲对象附加到缓冲纹理上,并且纹理图像来自于该缓冲对象的数据存储。当缓冲对象的数据存储内容被修改时,这些更改会反映在任何附加到该缓冲对象的缓冲纹理的内容中。如果没有任何缓冲对象绑定到缓冲纹理上,纹理访问的结果未定义。当一个缓冲对象的存储范围被附加到缓冲纹理时,该缓冲的数据存储区范围被视为纹理的纹理图像。指定在附加的缓冲对象范围内找到的纹理图像的存储格式,并且必须是。

2024-02-26 17:07:08 963

原创 8.8 OpenGL纹理和采样器:多重采样纹理

当在着色器中访问多重采样纹理时,访问需要一个整数向量来描述要获取哪个纹理元素,以及一个对应于第14.3.1节所述样本编号的整数,以确定从该纹理元素中获取哪个样本。多重采样纹理类似于二维或二维数组纹理,不同之处在于每个纹理元素(texel)包含多个样本。由于不同的实现可能对多重采样纹理支持不同的样本计数,因此实际分配给纹理图像的样本数量依赖于具体实现。,则图像将在所有纹理元素中使用相同的样本位置和相同数量的样本,并且样本位置不会依赖于图像的内部格式或大小。时,会删除目标现有的任何图像,纹理内容未定义。

2024-02-26 10:02:45 380

原创 8.7 OpenGL纹理和采样器:压缩纹理图像

纹理图像也可以使用已存储在已知压缩图像格式中的图像数据来指定或修改,这些格式包括附录D中定义的格式以及由扩展定义的任何额外格式。特定压缩内部格式施加的任何限制都是不变的,这意味着如果GL接受并以压缩形式存储纹理图像,在满足以下条件时,向。调用期间,对于这些具体压缩格式的压缩纹理图像中不与正在修改区域相交的任何4×4纹理单元块,其内容都会被保留。中描述的具体压缩格式之一,则纹理将以相应的纹理图像编码方式存储(参见附录D)。返回的图像,而且也适用于任何其他同样大小的正确编码的压缩纹理图像。标记的规范进行解码。

2024-02-25 21:21:32 961

原创 8.6 OpenGL纹理和采样器:备用纹理图像规范命令

定义一个二维纹理图像,其方式与TexImage2D完全相同,区别是图像数据来自帧缓冲区而不是客户端内存。target必须是TEXTURE_2D,或者来自表8.19中的立方体贴图面目标之一。xywidth和height精确对应于ReadPixels的相应参数(参见第18.2节);它们指定图像的宽度和高度,以及要复制的帧缓冲区区域的左下角(x,y)坐标。图像从帧缓冲区中被复制,就像这些参数被传递给CopyPixels函数(参见第18.3节),其中类型参数根据的不同设置为COLORDEPTH或。以与。

2024-02-25 19:52:45 1003

原创 8.5 OpenGL纹理和采样器:纹理图像规范

主纹理图像的细节级别为0,细节级别必须为非负整数。

2024-02-24 22:20:55 979

原创 8.4 OpenGL纹理和采样器:像素矩形

可以使用TexImage*D(参见第8.5节)向GL指定颜色、深度和某些其他值的矩形。这些命令的操作和参数中的一些与ReadPixels(用于从帧缓冲区获取像素值)共享;然而,关于ReadPixels的讨论被推迟到第9章,在详细讨论帧缓冲区之后。尽管如此,我们在本节中指出,与这些命令相关的参数和状态也与ReadPixels相关。许多参数控制了缓冲区对象或客户端内存中像素的编码(用于读取和写入),以及像素在放置到帧缓冲区中之前(用于读取、写入和复制)或从帧缓冲区中读取后的处理方式。这些参数是通过来设置的。

2024-02-23 17:25:08 983

原创 8.3 OpenGL纹理和采样器:采样对象查询

将分别返回带符号整数或无符号整数的边界颜色值;否则,根据第2.2.2节中的描述返回值。如果使用不匹配原始类型的类型查询边界颜色,则结果是未定义的。

2024-02-22 14:53:01 478

原创 8.1 OpenGL纹理和采样器:纹理对象

GL中的纹理由命名对象表示。纹理对象的命名空间是无符号整数,其中零被GL保留用于表示默认纹理对象。默认纹理对象在上下文初始化期间绑定到TEXTURE_1DTEXTURE_2DTEXTURE_3D和目标之一。

2024-02-22 14:46:41 745

原创 8.2 OpenGL纹理和采样器:采样器对象

如第8.22节所述,用于纹理处理的状态可以分为两类。GL纹理对象包括这两类状态。第一类表示维度和其他图像参数,第二类表示采样状态。此外,可以创建一个采样器对象,仅封装纹理对象的采样状态。

2024-02-22 14:45:41 478

原创 8 OpenGL纹理和采样器

每种支持的纹理类型都是由一维、二维或三维数组的纹素构成的纹理图像集合(参见章节2.6.6)。二维多重采样和二维多重采样数组纹理是特殊的二维和二维数组纹理,每个纹素中包含多个样本。缓冲区纹理是特殊的一维纹理,其纹理图像存储在单独的缓冲区对象中。纹理的内部数据类型可以是有符号或无符号的规范化固定点、有符号或无符号的整数,或浮点数,这取决于纹理的内部格式。活动纹理单元选择器选择由涉及纹理图像处理的命令访问的纹理图像单元。在着色器中,通过在指定的(s、t、r)纹理坐标位置采样图像的颜色来实现这种映射。

2024-02-21 16:18:51 521

原创 22 OpenGL状态查询

这些状态是使用在前几章中描述的命令设置的。与GL对象相关的状态通常可以使用与设置状态相同的命令一起描述来查询。这些命令可以直接作用于命名对象,也可以间接通过GL上下文中的绑定(例如当前绑定的帧缓冲对象)进行操作。所述章节中的命令重点介绍了与上下文直接相关的状态查询,而不是与特定对象相关的状态。在查询上下文状态时,可能会执行数据转换,如规范中第2.2.2节所述。

2024-02-20 13:36:24 833

原创 21 OpenGL特殊功能

本章描述了前面任何一章都不容易涵盖的附加功能,包括影响GL行为的提示。

2024-02-19 17:44:03 474

原创 20 OpenGL调试输出

OpenGL为应用程序开发者提供了调试输出功能,以便在执行GL命令时获取错误、未定义行为、性能警告等重要信息。开发人员可以通过回调函数或查询消息日志来接收这些调试消息,并且可以控制哪些消息被显示或隐藏,甚至插入自定义的应用程序生成的消息。调试消息的生成受上下文创建方式的影响。如果创建的是一个带有CONTEXT_FLAG_DEBUG_BIT标志的调试上下文,则系统会自动启用DEBUG_OUTPUT功能并确保生成完整的调试输出;

2024-02-19 13:36:57 1214

原创 19 OpenGL计算着色器

除了面向图形的着色操作,例如顶点着色、曲面细分、几何着色和片段着色之外,OpenGL还可以通过使用计算着色器进行通用计算。计算管线是一种执行通用着色器的单阶段机器形式。计算着色器按照第7.1节描述的方式创建,其类型参数为COMPUTE_SHADER。它们作为程序对象的一部分附加并使用,如第7.3节所述。计算负载由称为工作组的工作项组成,并通过计算程序的可执行代码处理。工作组是一组执行相同代码的着色器调用,可能以并行方式执行。

2024-02-18 13:32:10 1035

原创 18.4 OpenGL读取和复制像素:像素绘制和读取状态

除了这些参数外,还有额外的三值整数用于控制最终转换时的钳位行为。读取颜色钳位(read color clamping)的初始值为FIXED_ONLY。使用PixelStore设置的状态属于OpenGL客户端状态。像素操作所需的状态主要包括通过PixelStore函数设置的一系列参数。这些状态在表8.1和18.1中进行了总结概述。

2024-02-17 12:21:25 366

原创 18.3 OpenGL读取和复制像素:复制像素

几个命令在帧缓冲区的不同区域之间复制像素数据(参见第18.3.1节)。或者在纹理和渲染缓冲区的不同区域之间复制像素数据(参见第18.3.2节)。对于所有这些命令,如果源和目标相同或者是相同底层纹理图像的不同视图,并且如果源和目标区域在帧缓冲区、渲染缓冲区或纹理图像中重叠,那么复制操作产生的像素值是未定义的。

2024-02-17 12:17:15 945

原创 18.2 OpenGL读取和复制像素:读取像素

从帧缓冲区读取像素并将其放入像素包缓冲区或客户端内存的方法如下所示。我们按照像素读取过程发生的顺序描述各个阶段。ReadPixels 的操作。

2024-02-17 11:14:43 977

原创 18 OpenGL读取和复制像素

可以使用 ReadPixels 从帧缓冲区读取像素。BlitFramebuffer 可用于将像素块从帧缓冲区的一个部分复制到另一部分。

2024-02-17 11:14:11 360

原创 17.4 OpenGL将片段和样本写入帧缓冲区:整个帧缓冲区操作

本节描述控制或影响整个帧缓冲区的操作。

2024-02-16 21:40:36 885

原创 17.3 OpenGL将片段和样本写入帧缓冲区:每个片段的操作

片段(fragment)从光栅化阶段生成时带有窗口坐标(xw, yw)和深度值z。根据章节15的内容,片段会经历可编程片段处理阶段以添加附加数据。接下来,在章节17描述的一系列逐片段操作中,片段会被进一步修改,并可能被丢弃,这些操作包括但不限于模板测试、深度测试和遮挡查询等。在某些情况下,按照第14.9节所述,如果片段着色器程序有此要求,模板测试、深度测试以及遮挡查询可以在片段着色之前进行,以便提前筛选掉不满足条件的片段。最终,通过所有测试且未被丢弃的片段将用于更新帧缓冲区相应位置的像素颜色与属性。

2024-02-15 18:14:36 1133

原创 17.2 OpenGL将片段和样本写入帧缓冲区:多重采样点混合

如果启用了多重采样,并且栅格化的片段是由一个点基元产生的,则从方程式 14.2 计算的淡化因子将应用于片段。淡化因子与片段的 alpha 值相乘,得到最终的 alpha 值。淡化因子分别应用于每个片段颜色,并且仅在帧缓冲区中的相应颜色缓冲区具有固定或浮点格式时才会应用。

2024-02-14 17:45:17 373

原创 17.1 OpenGL将片段和样本写入帧缓冲区:抗锯齿应用

启用抗锯齿功能时,在图形渲染过程中,每个片元会计算出一个覆盖值来反映边缘平滑度。这个覆盖值在与片元本身的透明度(alpha 值)相乘后,产生一个更精确的最终 alpha 值,并用于混合。这一过程对帧缓冲区中支持固定点或浮点格式的颜色缓冲区有效,旨在消除锯齿并生成更为平滑和高质量的图像效果。

2024-02-14 17:40:22 473

原创 17 OpenGL将片段和样本写入帧缓冲区

执行深度测试、模板测试、混合运算等步骤,确定最终每个片段的颜色值是否以及如何被写入帧缓冲区中,这一过程决定了哪些像素将最终呈现在屏幕上。这些后续操作是图形管线不可或缺的一部分,它们共同协作以生成高质量、无锯齿、具有丰富细节和准确深度信息的最终渲染图像。:包含清除帧缓冲区内容、绑定不同的渲染目标、管理深度缓冲和其他附件,确保正确配置并更新帧缓冲区状态以符合渲染需求。:合并每个像素内的多个子样本颜色,并根据覆盖率计算透明度混合,实现更精确的颜色表现和透明效果。

2024-02-14 17:37:02 383

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除